fix: make effectivePermissions response structure match RolesPage requirements

This commit is contained in:
2026-06-11 22:20:06 -05:00
parent f5f0eee857
commit 73a84d762f

View File

@@ -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 */