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.');
|
abort(403, 'You may only query your own permissions.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$effective = $this->resolver->resolveAll(
|
// If target user is the owner, return an Owner role item
|
||||||
(int) $targetUserId,
|
if ((int) $targetUserId === $server->owner_id) {
|
||||||
$server->id,
|
$ownerRole = [
|
||||||
RoleService::KNOWN_PERMISSIONS
|
'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 */
|
/** PUT /api/client/servers/{server}/addons/permissions/override */
|
||||||
|
|||||||
Reference in New Issue
Block a user