Appearance
Restablecimiento de Contraseña del Portal
⚠️ DOCUMENTACIÓN RETROSPECTIVA — Generada a partir de código implementado el 2026-06-24
Módulo: Portal Clientes Tipo: Proceso Estado: Implementado Fecha: 2026-06-24
Descripción
Cuando un cliente del portal olvida su contraseña no puede autenticarse ni acceder a sus datos de cuenta, facturas ni deudas. El proceso de restablecimiento le permite recuperar el acceso de forma autónoma, sin intervención de un operador del ERP.
El proceso se inicia desde la página de login del portal. El cliente ingresa su identificacion (DNI o CUIT numérico) — no su email. El sistema localiza al usuario y envía un código de 6 dígitos al email que el cliente registró al darse de alta.
Valor para el negocio:
- Permite que el cliente recupere el acceso a su cuenta sin asistencia del equipo interno
- Reduce la carga operativa al eliminar la necesidad de intervención manual
- Mantiene la seguridad: el código se envía exclusivamente al email pre-registrado, no a uno ingresado en el formulario
Contexto:
- El proceso es iniciado exclusivamente por el cliente del portal — nunca por un operador del ERP
- El código de verificación tiene vigencia limitada de 15 minutos
- El sistema no revela si una identificacion está registrada, protegiendo la privacidad de los datos
Funcionalidad
Paso 1 — Solicitud del código (ForgotPasswordView)
El cliente accede a esta vista desde el enlace "Olvidé mi contraseña" en la página de login.
El cliente ingresa su identificacion (DNI o CUIT numérico, sin guiones ni espacios) y envía la solicitud. El sistema responde con el mensaje:
"Si el usuario existe, recibirás un mail en breve"
Este mensaje se muestra siempre, independientemente de si la identificacion está registrada o no.
Cuando la identificacion está registrada, el sistema envía un email al email pre-registrado del usuario (el que ingresó al crear su cuenta) con:
- El código de verificación de 6 dígitos
- Una indicación de que el código expira en 15 minutos
Paso 2 — Definición de nueva contraseña (ResetPasswordView)
El cliente accede a esta vista a través del enlace recibido por email. El código de verificación llega pre-completado en el formulario a partir del parámetro de la URL.
El cliente ingresa su nueva contraseña y la confirma. Al enviar, el sistema valida el código y actualiza la contraseña. Cuando el proceso es exitoso, el cliente es redirigido al login con un mensaje de confirmación.
Reglas de Negocio
RN-001: Input es identificacion, no email
- Descripción: El formulario de forgot-password solicita la identificacion (DNI o CUIT numérico). El cliente nunca ingresa su email manualmente. El sistema busca el usuario por identificacion y envía el código al email pre-registrado.
- Ejemplo: Un cliente ingresa "20123456789". El sistema localiza el usuario cuya
identificacion = 20123456789y envía el código al email registrado enportal_users.email.
RN-002: Anti-enumeración de cuentas
- Descripción: El sistema nunca revela si una identificacion está o no registrada en el portal. La respuesta al cliente es siempre la misma.
- Ejemplo: Un cliente ingresa una identificacion inexistente. El sistema muestra el mismo mensaje que si existiera; no se envía ningún email.
RN-003: Expiración del código
- Descripción: El código de verificación es válido únicamente durante 15 minutos desde el momento en que fue generado. Pasado ese tiempo, el cliente debe iniciar el proceso nuevamente.
- Ejemplo: Un cliente recibe el email pero intenta usar el enlace 20 minutos después. El sistema rechaza el código como expirado.
RN-004: Formato del código de verificación
- Descripción: El código es numérico de 6 dígitos, con ceros de relleno cuando corresponda.
- Ejemplo: Un código válido es "042871".
RN-005: Degradación sin SMTP
- Descripción: Si el servicio de correo electrónico no está configurado para el tenant, el sistema registra internamente el evento pero no devuelve un error al cliente.
- Ejemplo: La sucursal no tiene SMTP configurado. El cliente envía la solicitud, el sistema no puede enviar el email pero el cliente recibe la respuesta habitual sin indicación de error.
RN-006: Unicidad del código vigente
- Descripción: Cada solicitud genera un nuevo código. El código tiene vigencia hasta los 15 minutos de su emisión. Un código anterior queda implícitamente invalidado al generar uno nuevo.
Casos de Uso
UC-001: Cliente restablece su contraseña exitosamente
Actor: Cliente del portal
Precondiciones:
- El cliente tiene una cuenta activa en el portal con email registrado
- El cliente tiene acceso a la bandeja de entrada del email registrado
- El tenant tiene SMTP configurado
Flujo principal:
- El cliente accede a la página de login del portal y selecciona "Olvidé mi contraseña"
- El sistema muestra el formulario de solicitud (ForgotPasswordView)
- El cliente ingresa su identificacion (DNI o CUIT numérico) y envía la solicitud
- El sistema localiza al usuario, genera un código de 6 dígitos con expiración a 15 minutos y envía el email al email pre-registrado
- El sistema muestra el mensaje: "Si el usuario existe, recibirás un mail en breve"
- El cliente abre el email y selecciona el enlace de restablecimiento
- El sistema muestra el formulario de nueva contraseña (ResetPasswordView) con el código pre-completado
- El cliente ingresa su nueva contraseña y la confirmación, y envía el formulario
- El sistema valida que el código es correcto y no ha expirado, y actualiza la contraseña
- El sistema redirige al cliente al login con un mensaje de confirmación de éxito
Postcondiciones:
- La contraseña del cliente queda actualizada
- El código de verificación utilizado queda invalidado
UC-002: Cliente solicita reset con identificacion no registrada
Actor: Visitante del portal (sin cuenta bajo esa identificacion)
Flujo principal:
- El visitante accede a "Olvidé mi contraseña" e ingresa una identificacion no registrada
- El sistema detecta que no existe usuario con esa identificacion, pero no lo indica
- El sistema muestra el mismo mensaje
- No se envía ningún email
Postcondiciones:
- Ningún dato del sistema es modificado
- El visitante no obtiene información sobre la existencia de cuentas
UC-003: Cliente intenta usar un código expirado
Actor: Cliente del portal
Precondiciones:
- El cliente solicitó un código de restablecimiento
- Han transcurrido más de 15 minutos desde la generación del código
Flujo principal:
- El cliente accede al enlace recibido por email
- El sistema muestra el formulario ResetPasswordView con el código pre-completado
- El cliente ingresa la nueva contraseña y envía el formulario
- El sistema detecta que el código ha expirado y rechaza la solicitud
- El sistema informa al cliente que el enlace expiró y lo invita a iniciar el proceso nuevamente
Postcondiciones:
- La contraseña del cliente no es modificada
- El cliente puede reiniciar el proceso desde "Olvidé mi contraseña"
UC-004: Cliente solicita reset sin SMTP configurado
Actor: Cliente del portal
Precondiciones:
- El cliente tiene una cuenta activa con la identificacion ingresada
- El tenant no tiene servicio de correo configurado
Flujo principal:
- El cliente ingresa su identificacion y envía la solicitud
- El sistema localiza al usuario, genera el código, y registra internamente que el envío no pudo realizarse
- El sistema muestra el mismo mensaje de confirmación
- El cliente no recibe ningún email
Postcondiciones:
- El cliente no puede completar el restablecimiento en esta sesión
- No se expone ningún error al cliente
Puntos de Contacto con el Cliente (Frontend)
| Vista | Descripción |
|---|---|
| ForgotPasswordView | Formulario de ingreso de la identificacion (DNI/CUIT). Accesible desde el login del portal. |
| Email de restablecimiento | Mensaje enviado al email pre-registrado del usuario con el código de 6 dígitos y su expiración. |
| ResetPasswordView | Formulario de nueva contraseña y confirmación. El código llega pre-completado desde la URL. |
| Página de login (redirección) | Destino final del flujo exitoso, con mensaje de confirmación visible para el cliente. |
Criterios de Aceptación
- [ ] Dado que el cliente ingresa una identificacion registrada, cuando envía la solicitud, entonces el sistema muestra el mensaje genérico y envía el email con el código al email pre-registrado
- [ ] Dado que el cliente ingresa una identificacion no registrada, cuando envía la solicitud, entonces el sistema muestra el mismo mensaje sin enviar email y sin revelar que no existe
- [ ] Dado que el cliente recibe el email de restablecimiento, cuando abre el enlace, entonces la vista ResetPasswordView muestra el código pre-completado en el formulario
- [ ] Dado que el cliente ingresa una nueva contraseña dentro de los 15 minutos de generado el código, cuando envía el formulario, entonces el sistema actualiza la contraseña y redirige al login con mensaje de confirmación
- [ ] Dado que han transcurrido más de 15 minutos desde la generación del código, cuando el cliente intenta usarlo, entonces el sistema rechaza la solicitud e informa que el enlace expiró
- [ ] Dado que el tenant no tiene SMTP configurado, cuando el cliente solicita el restablecimiento, entonces el sistema muestra la respuesta habitual sin exponer ningún error al cliente
- [ ] Dado que el flujo fue completado exitosamente, cuando el cliente es redirigido al login, entonces puede autenticarse con su nueva contraseña
- [ ] Dado que el formulario solicita identificacion, cuando el cliente ingresa su DNI o CUIT numérico, entonces el código se envía al email registrado (no se solicita el email al cliente)
Notas Adicionales
- El proceso es autoservicio completo: no requiere intervención de ningún operador del ERP
- La protección anti-enumeración (RN-002) es una medida de seguridad deliberada; la experiencia de usuario es conscientemente ambigua para proteger la privacidad de las cuentas registradas
- El email nunca se ingresa en el formulario — esto evita que un atacante use el flujo para correlacionar identificaciones con emails
- La degradación silenciosa sin SMTP (RN-005) prioriza la experiencia del cliente por sobre la comunicación de errores de infraestructura
⚠️ NOTA IMPORTANTE: Validar con stakeholders antes de considerar final.