fix: make effectivePermissions response structure match RolesPage requirements
This commit is contained in:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user