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:
2026-07-08 11:16:44 +02:00
co-authored by Claude Sonnet 4.6
parent 190b4f6f34
commit a544818b5d
+9 -1
View File
@@ -136,6 +136,14 @@ export function useSession(): SessionState {
return ctx; 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 { 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);
} }