From 85a84e0f634ca3aeffcd90e14a9a7516c5c34088 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Fri, 11 Sep 2026 10:55:08 -0300 Subject: [PATCH] =?UTF-8?q?fix(web):=20centralizar=20acceso=20a=20administ?= =?UTF-8?q?raci=C3=B3n=20avanzada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-v2/src/auth/adminAccess.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 web-v2/src/auth/adminAccess.ts 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)))); +}