erp-core/docs/05-user-stories/mgn-001/US-MGN-001-005-001-reset-password.md

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

Estimación: 5 SP


Referencias