Saltar a contenido

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.