1.8 KiB
1.8 KiB
US-MGN-001-005-001: Reset de Contraseña (Forgot Password)
RF Asociado: RF-MGN-001-005 Módulo: MGN-001 - Fundamentos Epic: Autenticación y Seguridad Prioridad: P0 (MVP) Story Points: 5 Sprint: Sprint 2 Fecha: 2025-11-24
User Story
Como usuario que olvidó su contraseña, Quiero recibir un enlace por email para resetearla, Para recuperar acceso a mi cuenta sin contactar al administrador.
Criterios de Aceptación
Escenario 1: Solicitar reset de contraseña
Cuando ingreso mi email y solicito reset, Entonces recibo email con enlace de reset válido por 1 hora.
Escenario 2: Resetear contraseña con token válido
Cuando abro enlace y establezco nueva contraseña, Entonces password actualizado, tokens revocados, puedo hacer login.
Escenario 3: Token expirado o inválido
Cuando uso token expirado (>1 hora) o inválido, Entonces retorna error "Token inválido o expirado".
Reglas de Negocio
- RN-1: Token de reset expira en 1 hora
- RN-2: Token es single-use (se marca como usado)
- RN-3: Al resetear: revocar todos los refresh tokens
- RN-4: No revelar si email existe o no (prevenir user enumeration)
Tareas Técnicas
Backend
- POST /api/v1/auth/forgot-password - Generar token
- POST /api/v1/auth/reset-password - Resetear con token
- Tabla: auth.password_reset_tokens
- Enviar email con enlace
- Tests (8 casos)
Frontend
- ForgotPasswordPage con formulario email
- ResetPasswordPage con token + nueva password
- Tests