Roles y Permisos (RBAC)¶
La plataforma Nexus Energy utiliza un robusto sistema de control de acceso basado en roles (Role-Based Access Control - RBAC) y en la asignación de sucursales específicas. Esto garantiza que cada usuario acceda únicamente a los paneles de monitoreo y herramientas de administración que corresponden a sus responsabilidades.
👥 Clasificación de Roles¶
Los roles dentro de la plataforma se dividen en dos grandes niveles: Administradores de Plataforma (Globales) y Usuarios de Organización (Locales).
👑 1. Administrador de Plataforma (platform_admin)¶
- Alcance: Global sobre todo el sistema.
- Permisos:
- Creación, edición y suspensión de Organizaciones (Clientes).
- Visualización de métricas consolidadas del sistema.
- Gestión de invitaciones para administradores de empresas.
- Acceso ilimitado a todos los Sitios y Dispositivos de cualquier cliente.
🏢 2. Administrador de Organización (org_admin)¶
- Alcance: Multi-sucursal dentro de su empresa asignada.
- Permisos:
- Creación, edición y suspensión de sus Sitios (Sucursales).
- Alta, modificación y retiro de Dispositivos en campo.
- Envío de invitaciones de acceso a nuevos usuarios en su organización.
- Asignación de operarios a sucursales específicas.
- Visualización de métricas de negocio agregadas de toda la empresa.
📍 3. Administrador de Sitio (site_admin)¶
- Alcance: Exclusivo en una o más sucursales asignadas.
- Permisos:
- Edición de parámetros y coordenadas del Sitio asignado.
- Registro de logs de mantenimiento para los dispositivos de su sucursal.
- Reconocimiento (Acknowledge) de alarmas operativas locales.
- Visualización de telemetría completa e histórica en tiempo real.
👁️ 4. Operador y Lector de Sitio (site_viewer / viewer / operator)¶
- Alcance: Solo lectura o control básico de sucursal.
- Permisos:
- Visualización en tiempo real de los paneles de telemetría e inversores.
- Exportación de reportes históricos de generación y consumos.
- No pueden modificar configuraciones, crear objetos ni invitar a otros usuarios.
🗺️ Estructura y Visibilidad del Menú (NavBar.svelte)¶
Para mejorar la experiencia y evitar errores operativos, el menú principal está estrictamente segmentado en dos áreas conceptuales:
| Sección en Menú | Opción | Destino | ¿Quién lo puede ver? |
|---|---|---|---|
| Monitoreo (Siempre Visible) | Panel | /app/dashboard |
Todos los usuarios autenticados. |
| Sitios | /app/dashboard/sites |
Todos los usuarios (según asignaciones). | |
| Dispositivos | /app/dashboard/devices |
Todos los usuarios (según asignaciones). | |
| Organizaciones | /app/dashboard/organizations |
Solo platform_admin. |
|
| Gestión (Condicional) | Admin Plataforma | /app/admin/platform |
Solo platform_admin. |
| Admin Org | /app/admin/organization/[orgId] |
Solo org_admin. |
|
| Admin Sitio | /app/admin/site/[siteId] |
Solo site_admin / org_admin. |
[!IMPORTANT] Si el rol actual del usuario no otorga capacidades de gestión (por ejemplo, es un
site_viewer), la sección completa de "Gestión" se oculta del NavBar automáticamente (tanto en la versión de escritorio como en el menú deslizante móvil).
🔒 Seguridad en Servidores (Gating)¶
La visualización selectiva en el menú es una medida estética para optimizar la UX. La verdadera seguridad reside en el servidor:
* Cada ruta de administración (dentro de /routes/app/admin/*) posee un cargador de servidor (+page.server.ts) que comprueba la sesión en event.locals.userCtx.
* Si un usuario manipula manualmente la URL para acceder a un endpoint para el que no posee el rol requerido, el servidor interrumpe la carga inmediatamente y arroja un error 403 Forbidden o redirige a un panel seguro.