Screen · Cambiar contraseña

Cambiar contraseña

Pantalla interior, entrada desde Seguridad de la cuenta (A13, ruta /profile/security/password). Requiere sesión activa: clave actual + nueva + confirmación, con los mismos requisitos visibles del flujo de recuperación (A3). El éxito informa que cerramos las otras sesiones. A diferencia del reset por olvido, aquí no se bloquean los retiros — el usuario probó conocer la clave vigente.

/profile/security/password POST /v1/auth/change-password requisitos visibles en vivo éxito → cierra otras sesiones
Layout anotado

Un solo scroll, tres campos en canvas-first. La clave actual va primero y trae su propio rescate: el link a recuperación (A3) por si tampoco la recuerda.

top-app-bar · interior
clave actual + link a A3
requisitos en vivo
CTA · habilita al cumplir todo
9:41
Cambiar contraseña

Necesitas tu clave actual para crear una nueva.

Clave actual
••••••••
¿No la recuerdas?
Nueva clave
••••••••••
Mínimo 8 caracteres
Una mayúscula y una minúscula
Un número
Distinta a tu clave actual
Confirma la nueva clave
Repítela para confirmar
Guardar clave

Composición

  1. Clave actual primeroVerificación de posesión antes de pedir la nueva. Link ¿No la recuerdas? → cierra sesión con confirmación y entra al flujo A3 (que sí bloquea retiros 48h — se avisa en el sheet de confirmación).
  2. Requisitos · reuso A3Mismo checklist en vivo, con una regla extra: distinta a la clave actual (validada localmente comparando los campos).
  3. CTA gated"Guardar clave" habilita solo con: clave actual no vacía + requisitos completos + confirmación coincidente. Disabled canónico B4.
  4. Ojos independientesCada campo tiene su toggle de visibilidad. Se re-ocultan al perder foco.
Estados · error y éxito

La clave actual incorrecta es el único error de servidor con mensaje específico — aquí no hay riesgo de enumeración: el usuario ya está autenticado. El tercer estado documenta el confirm sheet de "¿No la recuerdas?" antes de saltar al flujo A3.

Error · clave actual
9:41
Cambiar contraseña

Necesitas tu clave actual para crear una nueva.

Clave actual
••••••••
La clave actual no es correcta.
¿No la recuerdas?
Éxito
9:41
Clave actualizada
Tu clave nueva ya está activa en este dispositivo.

Por tu seguridad, cerramos tus otras sesiones. Tendrás que iniciar sesión de nuevo en tus demás dispositivos.

Volver a Seguridad
Confirm · ¿No la recuerdas?
9:41
Cambiar contraseña

Necesitas tu clave actual para crear una nueva.

Clave actual
Escribe tu clave
¿No la recuerdas?

¿Recuperar tu clave?

Te enviaremos un código por SMS. Al cambiarla, cerraremos tus otras sesiones.

Continuar
Cancelar

Reglas de estado

  1. Error de clave actualMensaje específico "La clave actual no es correcta." — sin riesgo de enumeración post-auth. Tras 5 fallos, el backend fuerza re-login.
  2. Éxito condicionalLa nota "cerramos tus otras sesiones" solo aparece si había otras sesiones activas. Con una sola sesión, el éxito es limpio, sin nota.
  3. Sin bloqueo de retirosEl cambio con clave vigente no activa la ventana de 48h — esa regla es exclusiva del reset por olvido (A3).
  4. Confirm de recuperaciónEl link ¿No la recuerdas? abre un confirmation-sheet con copy aprobado verbatim: título "¿Recuperar tu clave?", cuerpo "Te enviaremos un código por SMS. Al cambiarla, cerraremos tus otras sesiones.", CTAs Continuar / Cancelar. Continuar cierra sesión y entra al flujo A3. Corregido a mano el 2026-08-11 — mantener en el próximo re-export: se retiró «y los retiros quedarán pausados 48 horas», una pausa que no existía en ninguna capa (BE-AUTH-0101); ver §redline de screens-password-recovery.html.
  5. Loading / offlineSpinner inline + "Procesando…" en el CTA. Offline: banner neutro + CTA disabled, formulario conservado (patrón A2).
Dark · 360dp
Dark · formulario
9:41
Cambiar contraseña

Necesitas tu clave actual para crear una nueva.

Clave actual
••••••••
¿No la recuerdas?
Nueva clave
••••••••••
Mínimo 8 caracteres
Una mayúscula y una minúscula
Un número
Distinta a tu clave actual
Confirma la nueva clave
Repítela para confirmar
Guardar clave
Notas de implementación · Flutter

Change password + revocación de sesiones

Endpoint

POST /v1/auth/change-password {current_password, new_password}. 401 de clave actual → mensaje específico. 200 → el backend revoca las demás sesiones y devuelve revoked_sessions: n para condicionar la nota de éxito.

Validación local

Mismo validador de A3 + regla new != current. La confirmación valida en onEditingComplete, no por tecla — evita el error prematuro "no coinciden".

Sesión local intacta

El token del dispositivo actual se rota silenciosamente (refresh) — el usuario no vuelve al login. Solo caen las sesiones remotas (consistente con A5).

Notificación de seguridad

El cambio dispara la notificación "Tu clave cambió" (canal seguridad) a todos los dispositivos — incluidos los que perdieron sesión.