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

1.2 Diagrama de Casos de Uso: Seguridad & Acceso

Este diagrama desglosa las operaciones específicas de acceso perimetral, recuperación de identidad y cierre seguro dentro del controlador central de autenticación de Mañuti.


1. Explicación y Semántica del Diagrama

El modelo expone los flujos fundamentales de entrada y salida del aplicativo:

  • Login Dual: Permite que el usuario ingrese indistintamente su dirección de correo electrónico o su nombre de usuario en un campo unificado (login).
  • Inclusiones (<<include>>):
    • El caso de uso Login Dual incluye obligatoriamente la resolución condicional de identidad: si el input cumple con el formato de correo electrónico, se evalúa contra la columna correo; en caso contrario, se valida contra usuario.
    • La Recuperación de Password incluye la solicitud del enlace de restablecimiento (vía token de 64 caracteres) y el consumo del token mediante el formulario seguro de actualización.
  • Logout Seguro: Ejecución de revocación de credenciales exclusivamente bajo método POST con protección CSRF, invalidando el ID de sesión en Redis y regenerando el token de sesión.

2. Cómo se Lee este Diagrama

  • El actor Usuario se conecta mediante flechas sólidas a los casos de uso transaccionales primarios (Login Dual, Logout Seguro, Recuperación de Password).
  • Las relaciones con líneas discontinuas y etiqueta <<include>> indican que la ejecución del caso de uso base no puede considerarse completa sin que el sistema ejecute automáticamente los sub-procesos vinculados.

3. Implementación en el Framework Mañuti

  • Controlador de Autenticación: App\Http\Controllers\AuthController@login intercepta el input y ejecuta la discriminación vía filter_var(..., FILTER_VALIDATE_EMAIL).
  • Protección Contra Fuerza Bruta: Integrado con RateLimiter::tooManyAttempts() en Redis (5 intentos / 180 segundos de bloqueo).
  • Controladores de Recuperación: ForgotPasswordController gestiona el despacho del mailable ResetPasswordMail, mientras ResetPasswordController consume el registro relacional en lost_password.

4. Diagrama Mermaid

flowchart LR
    %% Actor
    Usuario("Usuario")

    %% Casos de Uso
    UC_Login(["Login Dual"])
    UC_Email(["Ingresar Correo"])
    UC_User(["Ingresar Usuario"])
    UC_Logout(["Logout Seguro (POST)"])
    UC_Recover(["Recuperación de Password"])
    UC_ReqLink(["Solicitar Link"])
    UC_Reset(["Restablecer con Token"])

    %% Relaciones Principales
    Usuario --> UC_Login
    Usuario --> UC_Logout
    Usuario --> UC_Recover

    %% Relaciones Include (Líneas punteadas)
    UC_Login -.->|"<<include>>"| UC_Email
    UC_Login -.->|"<<include>>"| UC_User
    
    UC_Recover -.->|"<<include>>"| UC_ReqLink
    UC_Recover -.->|"<<include>>"| UC_Reset

Enlaces Relacionados

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