Appearance
Visión General del Sistema
1. Problema que resuelve
El sistema implementa un modelo de control de acceso basado en roles (RBAC – Role-Based Access Control), completamente definido en base de datos.
El objetivo es desacoplar los permisos del frontend y centralizar toda la lógica de autorización en la base de datos.
Cuando un usuario ingresa:
- El backend determina qué apps puede usar.
- Qué módulos puede ver dentro de cada app.
- Qué acciones puede ejecutar dentro de cada módulo.
El frontend no decide permisos.
Solo consume una vista o función (ej: v_menu_usuario, obtener_menu_usuario_v2) y renderiza lo que recibe.
2. Principio arquitectónico
El frontend es un consumidor pasivo del modelo de permisos.
No hay permisos hardcodeados. No hay lógica duplicada. No hay decisiones de seguridad en Python o en la UI.
Todo el modelo se define en base de datos:
- Qué apps existen.
- Qué módulos tiene cada app.
- Qué acciones tiene cada módulo.
- Qué roles existen.
- Qué módulos tiene cada rol.
- Qué acciones tiene cada rol.
Esto evita:
- Inconsistencias entre vistas.
- Permisos olvidados.
- Bugs de seguridad por error humano.
- Dependencia del frontend para controlar acceso.
La base de datos es la única fuente de verdad.