diff --git a/web-v2/src/auth/adminAccess.ts b/web-v2/src/auth/adminAccess.ts new file mode 100644 index 0000000..afd09b0 --- /dev/null +++ b/web-v2/src/auth/adminAccess.ts @@ -0,0 +1,26 @@ +import type { AuthUser } from '../lib/api'; + +function normalizeRole(value: string) { + return value + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .toLowerCase() + .replace(/[^a-z0-9]+/g, ' ') + .trim(); +} + +const ADMIN_ROLES = new Set([ + 'admin', + 'administrator', + 'administrador', + 'superadmin', + 'super admin', + 'superadministrator', + 'super administrator', + 'superadministrador', + 'super administrador', +]); + +export function hasAdministratorRole(user: AuthUser | null) { + return Boolean(user?.roles.some((role) => ADMIN_ROLES.has(normalizeRole(role)))); +}