Nebula ERP utiliza un modelo de RBAC (Role-Based Access Control) atomizado. Cada acción en el sistema se mapea a un permiso único con el formato:
{SERVICE}:{RESOURCE}:{ACTION} (e.g., ACCOUNTING:INVOICE:CREATE).
| Rol | Alcance | Descripción |
|---|---|---|
| SYSTEM_ADMIN | Global | Acceso total a SimappeAdmin. Gestión de licencias y creación de Tenants. |
| TENANT_ADMIN | Tenant | Administrador supremo del cliente. Gestiona usuarios internos, roles y menús de su sucursal. |
| ACCOUNTANT_SENIOR | Tenant | Acceso a cierre contable, auditoría financiera y reportes gerenciales. |
| SALES_OPERATOR | Tenant | Acceso a facturación, clientes y consulta de inventarios. |
| SUPPORT_READ_ONLY | Tenant | Rol técnico para soporte Centrica. Solo lectura de logs y configuraciones base (sin acceso financiero). |
Los permisos no están hardcodeados en el código. Se cargan desde admin.roles_permissions en el SimappeOauth2Server durante el login para construir los Claims del JWT.
Ningún microservicio de negocio debe validar permisos por nombre de "Rol" (e.g., hasRole('ADMIN')). Siempre debe validar por "Permiso" (e.g., hasAuthority('BILLING:SETUP:READ')).
Entregable Arquitectura - Tarea 1.7.4
Versión 1.0 - Proyecto Nebula ERP