diff --git a/src/auth/session.tsx b/src/auth/session.tsx index 657819c..e979df6 100644 --- a/src/auth/session.tsx +++ b/src/auth/session.tsx @@ -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); }