diff --git a/app/Addons/AdvancedAdmin/Http/Controllers/Client/ServerRoleController.php b/app/Addons/AdvancedAdmin/Http/Controllers/Client/ServerRoleController.php index 9ed0180..ea5cf27 100644 --- a/app/Addons/AdvancedAdmin/Http/Controllers/Client/ServerRoleController.php +++ b/app/Addons/AdvancedAdmin/Http/Controllers/Client/ServerRoleController.php @@ -99,13 +99,48 @@ class ServerRoleController extends Controller abort(403, 'You may only query your own permissions.'); } - $effective = $this->resolver->resolveAll( - (int) $targetUserId, - $server->id, - RoleService::KNOWN_PERMISSIONS - ); + // If target user is the owner, return an Owner role item + if ((int) $targetUserId === $server->owner_id) { + $ownerRole = [ + 'role' => [ + 'id' => 0, + 'name' => 'Owner', + 'color' => '#f59e0b', + 'description' => 'Full server access — assigned to the server owner', + 'permissions' => array_keys(RoleService::KNOWN_PERMISSIONS), + 'created_at' => now()->toIso8601String(), + ], + 'source' => 'Server Owner', + ]; + return response()->json(['data' => [$ownerRole]]); + } - return response()->json(['data' => $effective]); + // Get user's assigned roles on this server + $roles = $this->resolver->getUserRolesForServer((int) $targetUserId, $server->id); + + $data = []; + foreach ($roles as $role) { + $allowedPermissions = []; + foreach ($role->permissions as $p) { + if ($p->value === 'allow') { + $allowedPermissions[] = $p->permission; + } + } + + $data[] = [ + 'role' => [ + 'id' => $role->id, + 'name' => $role->name, + 'color' => $role->color, + 'description' => $role->description, + 'permissions' => $allowedPermissions, + 'created_at' => $role->created_at?->toIso8601String(), + ], + 'source' => 'Role Assignment', + ]; + } + + return response()->json(['data' => $data]); } /** PUT /api/client/servers/{server}/addons/permissions/override */