1.3 Diagrama de Casos de Uso: Gestión de Sesiones
Este diagrama modela la capacidad del administrador para supervisar, auditar y revocar terminales activas en tiempo real bajo la política de Sesión Única (Single Session Policy) de Mañuti.
1. Explicación y Semántica del Diagrama
El módulo representa la instrumentación de telemetría y defensa activa:
- Listar Usuarios Conectados: Consulta la tabla relacional espejo
loginfiltrando poropen = 1, cruzando datos con el modeloUsuarioy sus roles asignados. - Ver Detalles (
<<extend>>): Extensión condicional que permite inspeccionar la dirección IP del cliente, cadena de User-Agent recortada y tiempo transcurrido mediantediffForHumans(). - Desconectar Usuario Remoto (Kill Switch): Acción administrativa atómica que marca
open = 0en MariaDB, destruye la llave en Redis y despacha el evento WebSocketUserSessionTerminated. - Visualizar Alertas de Seguridad: Interfaz reactiva donde el administrador recibe avisos en vivo cuando ocurren inicios de sesión concurrentes o bloqueos por inactividad.
2. Cómo se Lee este Diagrama
- El Administrador actúa como operador exclusivo de las funciones de gestión.
- La flecha discontinua
<<extend>>desdeVer DetalleshaciaListar Usuarios Conectadosindica que la visualización profunda es una acción opcional que complementa la grilla base. - Las acciones de desconexión y visualización de alertas operan de forma independiente a la consulta de listados.
3. Implementación en el Framework Mañuti
- Controlador:
App\Http\Controllers\Admin\ActiveSessionController. - Seguridad: Protegido por el permiso
sessions.managevía middlewarecan:sessions.manage. - Capa Reactiva: El frontend se suscribe al canal privado
admin.sessionsmediante Laravel Echo y Reverb para actualizar la grilla y resaltar en verde (row-highlight) a los nuevos operadores conectados.
4. Diagrama Mermaid
flowchart LR
%% Actor
Administrador("Administrador")
%% Módulo / Paquete
subgraph "Control de Sesiones"
UC_List(["Listar Usuarios Conectados"])
UC_Details(["Ver Detalles (IP/Navegador)"])
UC_Kill(["Desconectar Usuario Remoto"])
UC_Alert(["Visualizar Alertas de Seguridad"])
end
%% Relaciones Principales
Administrador --> UC_List
Administrador --> UC_Kill
Administrador --> UC_Alert
%% Relaciones Extend (Líneas punteadas)
UC_List -.->|"<<extend>>"| UC_Details