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 Dualincluye obligatoriamente la resolución condicional de identidad: si el input cumple con el formato de correo electrónico, se evalúa contra la columnacorreo; en caso contrario, se valida contrausuario. - La
Recuperación de Passwordincluye la solicitud del enlace de restablecimiento (vía token de 64 caracteres) y el consumo del token mediante el formulario seguro de actualización.
- El caso de uso
- Logout Seguro: Ejecución de revocación de credenciales exclusivamente bajo método
POSTcon 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@loginintercepta el input y ejecuta la discriminación víafilter_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:
ForgotPasswordControllergestiona el despacho del mailableResetPasswordMail, mientrasResetPasswordControllerconsume el registro relacional enlost_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