<?php namespace Pterodactyl\Services\Servers; use Pterodactyl\Models\User; use Pterodactyl\Models\Server; class GetUserPermissionsService { /** * Returns the server specific permissions that a user has. This checks * if they are an admin or a subuser for the server. If no permissions are * found, an empty array is returned. * * @return string[] */ public function handle(Server $server, User $user) { if ($user->root_admin || $user->id === $server->owner_id) { $permissions = ['*']; if ($user->root_admin) { $permissions[] = 'admin.websocket.errors'; $permissions[] = 'admin.websocket.install'; $permissions[] = 'admin.websocket.transfer'; } return $permissions; } /** @var \Pterodactyl\Models\Subuser|null $subuserPermissions */ $subuserPermissions = $server->subusers()->where('user_id', $user->id)->first(); return $subuserPermissions ? $subuserPermissions->permissions : []; } }