Files
NightSpire/home/templates/partials/change_password.html
T
Inna d0febb4855 Fase 3 (islas): cambiar contraseña y token de seguridad en React/TSX
Ambas vistas ya devolvían JSON en POST y exigen sesión, así que sin cambio de backend:

- ChangePasswordForm.tsx: 4 campos (actual/nueva/confirmar/token) con mostrar-ocultar;
  POST form-urlencoded + CSRF a change_password; mensaje HTML; si el backend responde
  redirect:true (logout por seguridad), redirige a login.
- SecurityTokenForm.tsx: muestra la fecha del token y un botón que solicita uno nuevo;
  POST -> actualiza la fecha con token_date de la respuesta.
- Plantillas: los <form> + scripts jQuery se sustituyen por las islas
  (#change-password-app / #security-token-app) con data-csrf/data-url. El texto
  informativo y los enlaces se quedan en Django.

Verificado: check OK; ambas vistas siguen redirigiendo a login/index sin sesión.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 21:26:30 +00:00

30 lines
1.9 KiB
HTML

<div class="main-page">
<div class="middle-content">
<div class="body-content">
<div class="title-content"><h1>Cambiar contraseña</h1></div>
<div class="box-content">
<div class="title-box-content"><h2>Información</h2><a class="back-to-account" href="my-account">Regresar a mi cuenta</a><a class="back-to-account-responsive" href="my-account">Regresar</a></div>
<div class="body-box-content justified">
<br>
<p>La contraseña nueva debe ser alfanumérica y con una longitud de hasta 16 caracteres.</p>
<p>Escoje una contraseña que sea difícil de adivinar por los demás y guárdala en un lugar seguro.</p>
<br>
<p>Si aún no tienes Token de seguridad, puedes solicitarlo <a href="security-token" target="_blank">aquí</a>.</p>
<div class="centered">
<br>
<br>
{% load django_vite %}
<!-- Isla React (Vite): cambio de contraseña. POST a la propia
vista (JSON) -> re-deriva el verifier bnet. -->
<div id="change-password-app"
data-csrf="{{ csrf_token }}"
data-url="{% url 'change_password' %}"
data-login-url="{% url 'login' %}"></div>
{% vite_asset 'src/entries/change_password.tsx' %}
<br>
</div>
</div>
</div>
</div>
</div>
</div>