id === $server->owner_id; $isAdmin = $user->isAdmin() && ($user->can('view', $server) || $user->can('update', $server)); if ($isOwner && !$isAdmin) { return ['*']; } $adminPermissions = [ 'admin.websocket.errors', 'admin.websocket.install', 'admin.websocket.transfer', ]; if ($isAdmin) { return $isOwner || $user->can('update', $server) ? array_merge(['*'], $adminPermissions) : array_merge([Permission::ACTION_WEBSOCKET_CONNECT], $adminPermissions); } /** @var Subuser|null $subuser */ $subuser = $server->subusers()->where('user_id', $user->id)->first(); return $subuser->permissions ?? []; } }