Files
ladill-meet/app/Services/Meet/MeetPermissions.php
T
isaaccladandCursor 965fb992e9
Deploy Ladill Meet / deploy (push) Failing after 7s
Initial Ladill Meet release.
Phases 0–18: core meetings, webinar, breakouts, team chat, live streaming, town hall, billing, and Ladill Mail calendar wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 23:35:29 +00:00

45 lines
1.1 KiB
PHP

<?php
namespace App\Services\Meet;
use App\Models\Member;
class MeetPermissions
{
/** @var array<string, list<string>> */
protected array $roleAbilities = [
'owner' => ['*'],
'admin' => ['*'],
'moderator' => [
'dashboard.view', 'meetings.view', 'meetings.create', 'meetings.manage',
'meetings.host', 'chat.moderate', 'reports.view',
],
'member' => [
'dashboard.view', 'meetings.view', 'meetings.create', 'meetings.host',
],
'guest' => [
'meetings.view',
],
];
public function can(?Member $member, string $ability): bool
{
if ($member === null) {
return false;
}
$abilities = $this->roleAbilities[$member->role] ?? [];
if (in_array('*', $abilities, true)) {
return true;
}
return in_array($ability, $abilities, true);
}
public function isAdmin(?Member $member): bool
{
return $member !== null && in_array($member->role, ['owner', 'admin'], true);
}
}