Roles: entrenador renombrado a administracion (administracion de clinica, sin Configuracion)

This commit is contained in:
2026-09-03 00:32:40 +00:00
parent 3f6f1c5f8f
commit bf659bf652
3 changed files with 60 additions and 55 deletions

View File

@@ -14,38 +14,40 @@ const ROLE_RANK: Record<FrontendRole, number> = {
cosmetologia: 50, cosmetologia: 50,
psicologa: 50, psicologa: 50,
farmacia: 50, farmacia: 50,
entrenador: 10, administracion: 10,
marketing: 10, marketing: 10,
lectura: 10, lectura: 10,
}; };
// Visibilidad del menú por ruta. Si una ruta no está listada, se muestra a todos los roles. // Visibilidad del menú por ruta. Si una ruta no está listada, se muestra a todos los roles.
// 'administracion' (administración de la clínica) ve toda la operación excepto
// /configuracion (solo admin del sistema), /mis-ventas, /cumpleanos y /wacrm/*.
const MENU_ROLES: Record<string, FrontendRole[]> = { const MENU_ROLES: Record<string, FrontendRole[]> = {
'/': ['admin', 'recepcion', 'medico', 'lectura'], '/': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/agenda': ['admin', 'recepcion', 'medico'], '/agenda': ['admin', 'recepcion', 'medico', 'administracion'],
'/mis-ventas': ['medico'], '/mis-ventas': ['medico'],
'/pacientes': ['admin', 'recepcion', 'medico', 'lectura'], '/pacientes': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/pos': ['admin', 'recepcion'], '/pos': ['admin', 'recepcion', 'administracion'],
'/visitas': ['admin', 'recepcion', 'medico'], '/visitas': ['admin', 'recepcion', 'medico', 'administracion'],
'/consultas': ['admin', 'recepcion', 'medico'], '/consultas': ['admin', 'recepcion', 'medico', 'administracion'],
'/expedientes': ['admin', 'recepcion', 'medico'], '/expedientes': ['admin', 'recepcion', 'medico', 'administracion'],
'/medicos': ['admin', 'recepcion'], '/medicos': ['admin', 'recepcion', 'administracion'],
'/servicios': ['admin', 'recepcion', 'medico', 'lectura'], '/servicios': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/productos': ['admin', 'recepcion', 'lectura'], // deprecated: redirige a /inventario '/productos': ['admin', 'recepcion', 'lectura', 'administracion'], // deprecated: redirige a /inventario
'/ventas': ['admin', 'recepcion'], '/ventas': ['admin', 'recepcion', 'administracion'],
'/pagos': ['admin', 'recepcion'], '/pagos': ['admin', 'recepcion', 'administracion'],
'/monedero': ['admin', 'recepcion', 'lectura'], '/monedero': ['admin', 'recepcion', 'lectura', 'administracion'],
'/inventario': ['admin', 'recepcion', 'lectura'], '/inventario': ['admin', 'recepcion', 'lectura', 'administracion'],
'/cortes': ['admin', 'recepcion'], '/cortes': ['admin', 'recepcion', 'administracion'],
'/reportes': ['admin', 'recepcion', 'lectura'], '/reportes': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura'], '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura'], '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura'], '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura'], '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura'], '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura'], '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura'], '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=exportar': ['admin', 'recepcion', 'lectura'], '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'administracion'],
'/configuracion': ['admin'], '/configuracion': ['admin'],
'/cumpleanos': ['admin', 'recepcion'], '/cumpleanos': ['admin', 'recepcion'],
'/wacrm/messages': ['admin', 'recepcion'], '/wacrm/messages': ['admin', 'recepcion'],
@@ -183,7 +185,7 @@ export const ROLE_LABELS: Record<FrontendRole, string> = {
cosmetologia: 'Cosmetología', cosmetologia: 'Cosmetología',
psicologa: 'Psicóloga', psicologa: 'Psicóloga',
farmacia: 'Farmacia', farmacia: 'Farmacia',
entrenador: 'Entrenador', administracion: 'Administración',
marketing: 'Marketing', marketing: 'Marketing',
lectura: 'Lectura', lectura: 'Lectura',
}; };

View File

@@ -556,7 +556,7 @@ export interface WacrmLead {
created_at: string | null; created_at: string | null;
} }
export type FrontendRole = 'admin' | 'medico' | 'recepcion' | 'enfermeria' | 'cosmetologia' | 'psicologa' | 'farmacia' | 'entrenador' | 'marketing' | 'lectura'; export type FrontendRole = 'admin' | 'medico' | 'recepcion' | 'enfermeria' | 'cosmetologia' | 'psicologa' | 'farmacia' | 'administracion' | 'marketing' | 'lectura';
export interface FrontendUser { export interface FrontendUser {
id: number; id: number;

View File

@@ -6,7 +6,7 @@ como desde controladores sin problemas de orden de carga.
La matriz se persiste en ir.config_parameter 'skeen.menu_roles' como JSON La matriz se persiste en ir.config_parameter 'skeen.menu_roles' como JSON
{href: [roles...]}. Si no existe, se usan los defaults de DEFAULT_MENU_ROLES {href: [roles...]}. Si no existe, se usan los defaults de DEFAULT_MENU_ROLES
(mismos que MENU_ROLES hardcodeado del frontend) y los 6 roles nuevos heredan (mismos que MENU_ROLES hardcodeado del frontend) y los 5 roles nuevos heredan
el mismo set de secciones que 'lectura'. el mismo set de secciones que 'lectura'.
""" """
@@ -20,7 +20,7 @@ ROLE_SELECTION = [
('cosmetologia', 'Cosmetología'), ('cosmetologia', 'Cosmetología'),
('psicologa', 'Psicóloga'), ('psicologa', 'Psicóloga'),
('farmacia', 'Farmacia'), ('farmacia', 'Farmacia'),
('entrenador', 'Entrenador'), ('administracion', 'Administración'),
('marketing', 'Marketing'), ('marketing', 'Marketing'),
('lectura', 'Lectura'), ('lectura', 'Lectura'),
] ]
@@ -35,7 +35,7 @@ ROLE_RANKS = {
'cosmetologia': 50, 'cosmetologia': 50,
'psicologa': 50, 'psicologa': 50,
'farmacia': 50, 'farmacia': 50,
'entrenador': 10, 'administracion': 10,
'marketing': 10, 'marketing': 10,
'lectura': 10, 'lectura': 10,
} }
@@ -43,32 +43,35 @@ ROLE_RANKS = {
MENU_ROLES_KEY = 'skeen.menu_roles' MENU_ROLES_KEY = 'skeen.menu_roles'
# Defaults = MENU_ROLES de src/lib/auth.tsx (4 roles originales). # Defaults = MENU_ROLES de src/lib/auth.tsx (4 roles originales).
# 'administracion' (personal de administración de la clínica) ve toda la
# operación EXCEPTO /configuracion (solo admin del sistema), /mis-ventas,
# /cumpleanos y /wacrm/*.
DEFAULT_MENU_ROLES = { DEFAULT_MENU_ROLES = {
'/': ['admin', 'recepcion', 'medico', 'lectura'], '/': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/agenda': ['admin', 'recepcion', 'medico'], '/agenda': ['admin', 'recepcion', 'medico', 'administracion'],
'/mis-ventas': ['medico'], '/mis-ventas': ['medico'],
'/pacientes': ['admin', 'recepcion', 'medico', 'lectura'], '/pacientes': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/pos': ['admin', 'recepcion'], '/pos': ['admin', 'recepcion', 'administracion'],
'/visitas': ['admin', 'recepcion', 'medico'], '/visitas': ['admin', 'recepcion', 'medico', 'administracion'],
'/consultas': ['admin', 'recepcion', 'medico'], '/consultas': ['admin', 'recepcion', 'medico', 'administracion'],
'/expedientes': ['admin', 'recepcion', 'medico'], '/expedientes': ['admin', 'recepcion', 'medico', 'administracion'],
'/medicos': ['admin', 'recepcion'], '/medicos': ['admin', 'recepcion', 'administracion'],
'/servicios': ['admin', 'recepcion', 'medico', 'lectura'], '/servicios': ['admin', 'recepcion', 'medico', 'lectura', 'administracion'],
'/productos': ['admin', 'recepcion', 'lectura'], '/productos': ['admin', 'recepcion', 'lectura', 'administracion'],
'/ventas': ['admin', 'recepcion'], '/ventas': ['admin', 'recepcion', 'administracion'],
'/pagos': ['admin', 'recepcion'], '/pagos': ['admin', 'recepcion', 'administracion'],
'/monedero': ['admin', 'recepcion', 'lectura'], '/monedero': ['admin', 'recepcion', 'lectura', 'administracion'],
'/inventario': ['admin', 'recepcion', 'lectura'], '/inventario': ['admin', 'recepcion', 'lectura', 'administracion'],
'/cortes': ['admin', 'recepcion'], '/cortes': ['admin', 'recepcion', 'administracion'],
'/reportes': ['admin', 'recepcion', 'lectura'], '/reportes': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura'], '/reportes?tab=adeudos': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura'], '/reportes?tab=comisiones': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura'], '/reportes?tab=horas-agenda': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura'], '/reportes?tab=paquetes': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura'], '/reportes?tab=vendedores': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura'], '/reportes?tab=concentrado': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura'], '/reportes?tab=recomendaciones': ['admin', 'recepcion', 'lectura', 'administracion'],
'/reportes?tab=exportar': ['admin', 'recepcion', 'lectura'], '/reportes?tab=exportar': ['admin', 'recepcion', 'lectura', 'administracion'],
'/configuracion': ['admin'], '/configuracion': ['admin'],
'/cumpleanos': ['admin', 'recepcion'], '/cumpleanos': ['admin', 'recepcion'],
'/wacrm/messages': ['admin', 'recepcion'], '/wacrm/messages': ['admin', 'recepcion'],
@@ -76,7 +79,7 @@ DEFAULT_MENU_ROLES = {
} }
# Roles nuevos que por default ven lo mismo que 'lectura'. # Roles nuevos que por default ven lo mismo que 'lectura'.
READ_ONLY_NEW_ROLES = ('enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'entrenador', 'marketing') READ_ONLY_NEW_ROLES = ('enfermeria', 'cosmetologia', 'psicologa', 'farmacia', 'marketing')
def default_menu_roles(): def default_menu_roles():