resources/views/pages/frontend/docs/uml-casos-uso-sesiones.md
Última modificación: 24 Oct, 2026

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 login filtrando por open = 1, cruzando datos con el modelo Usuario y 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 mediante diffForHumans().
  • Desconectar Usuario Remoto (Kill Switch): Acción administrativa atómica que marca open = 0 en MariaDB, destruye la llave en Redis y despacha el evento WebSocket UserSessionTerminated.
  • 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>> desde Ver Detalles hacia Listar Usuarios Conectados indica 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.manage vía middleware can:sessions.manage.
  • Capa Reactiva: El frontend se suscribe al canal privado admin.sessions mediante 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

Enlaces Relacionados

Edita este documento en >> uml-casos-uso-sesiones.md
← Volver a la Landing Page