Files
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

47 lines
2.9 KiB
HTML

<div class="main-page">
<div class="middle-content">
<div class="body-content">
<div class="title-content"><h1>Token de seguridad</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>El <span>Token de seguridad</span> es un código de 6 dígitos (sensible a mayúsculas y minúsculas), que añade seguridad a ciertas opciones en tu panel de cuenta en la página web.</p>
<p>El mismo será solicitado para acciones importantes de la cuenta.</p>
<br>
<p>Para obtenerlo, es necesario solicitarlo haciendo click en el botón debajo.</p>
<p>Al hacer click, un mensaje será enviado al correo de la cuenta conteniendo el Token de Seguridad.</p>
<br>
<p><span class="red-info2">Es importante que conserves el Token de seguridad en un lugar seguro y no lo compartas con otros usuarios.</span></p>
<br>
<fieldset>
<legend>NOTA</legend>
<div class="separate2">
<p>Puedes solicitar un nuevo Token de seguridad una vez cada 7 días.</p>
</div>
</fieldset>
<div class="centered">
<br>
<br>
{% load django_vite %}
<!-- Isla React (Vite): solicitud del token de seguridad.
POST a la propia vista (JSON), actualiza la fecha. -->
<div id="security-token-app"
data-csrf="{{ csrf_token }}"
data-url="{% url 'security_token' %}"
data-token-date="{{ token_date }}"></div>
{% vite_asset 'src/entries/security_token.tsx' %}
<br>
<p><a href="recover">He olvidado el Token de seguridad</a></p>
<br>
</div>
</div>
</div>
<script>
$("select").change(function(){
$(this).css("color", $(this).children("option:selected").css("color"));
});
</script>
</div>
</div>
</div>