fix(perms): 'manage all' concede todo (igual que Gate::before del backend)
Los botones (nueva incidencia, nueva inspección, editar, subir foto) se ocultaban a usuarios Admin: el backend los autoriza vía el bypass de super-admin (Gate::before → 'manage all'), pero el rol Admin no tiene los permisos granulares (create issues, create inspections, edit issues, upload media, view issues) asignados explícitamente, así que /me no los devolvía. hasPermission ahora trata 'manage all' como comodín. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -136,6 +136,14 @@ export function useSession(): SessionState {
|
||||
return ctx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Comprueba un permiso Spatie. Replica el `Gate::before` del backend: quien
|
||||
* tiene `manage all` (súper-admin) pasa todas las comprobaciones. Sin ese
|
||||
* comodín, un usuario Admin no tendría los permisos granulares asignados
|
||||
* explícitamente y la UI le ocultaría acciones que el servidor sí le permite.
|
||||
*/
|
||||
export function hasPermission(user: User | null, permission: string): boolean {
|
||||
return Boolean(user?.permissions?.includes(permission));
|
||||
const perms = user?.permissions;
|
||||
if (!perms) return false;
|
||||
return perms.includes('manage all') || perms.includes(permission);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user