forked from Alex/Pterodactyl-Panel
37 lines
1.0 KiB
PHP
37 lines
1.0 KiB
PHP
<?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 : [];
|
|
}
|
|
}
|