docs: registra el deploy a produccion de v1.3.0 (prueba SMTP)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -103,6 +103,34 @@ autorregistro/aprobacion/SMTP.
|
||||
Correo (SMTP) — sin eso, nadie externo puede completar el autorregistro en producción (el enlace
|
||||
de verificación solo queda logueado en el servidor, no llega por correo de verdad).
|
||||
|
||||
### Cambiar clave desde la app (v1.2.0, 2026-09-06)
|
||||
|
||||
- `PUT /api/auth/change-password` (exige la clave actual, valida clave nueva ≥ 8 caracteres) +
|
||||
opción "Cambiar clave" en el menú de usuario (popup), para cualquier usuario logueado —
|
||||
independiente de "olvidé mi clave", que es para cuando no se puede iniciar sesión.
|
||||
- Desplegado a producción el mismo día; verificado via curl que rechaza clave actual incorrecta
|
||||
con 400 (no se tocó la clave real del superadmin durante la prueba).
|
||||
|
||||
### Boton de prueba real en Correo (SMTP) (v1.3.0, 2026-09-06)
|
||||
|
||||
- El usuario reportó, con razón, que la pantalla de SMTP no tenía forma de confirmar que la
|
||||
configuración guardada funcionara de verdad (sin botón de prueba ni campo de destinatario) — una
|
||||
omisión básica para una pantalla de config de un servicio externo.
|
||||
- `POST /api/settings/smtp/test` (superadmin, rate-limited a 10/15min): usa los valores actuales
|
||||
del formulario (aunque no se hayan guardado, cae a la clave ya guardada si el campo viene vacío)
|
||||
y hace un envío real. A diferencia de `sendMail()` (correo de negocio, nunca lanza), este
|
||||
endpoint sí propaga el error real del servidor SMTP — es diagnóstico explícito del superadmin.
|
||||
- Panel de Configuración → Correo (SMTP): nueva sección "Probar configuración" con campo de
|
||||
destinatario, botón "Enviar prueba" y resultado real (éxito o el mensaje de error tal cual).
|
||||
- Verificado en dev con curl (400 sin host/usuario) y Playwright (formulario + envío real contra
|
||||
el SMTP interno con credenciales falsas → error real "certificate has expired" mostrado en la
|
||||
UI). Desplegado a producción el mismo día; no se verificó el flujo autenticado completo en
|
||||
producción porque minar un JWT de prueba en el servidor fue bloqueado por el clasificador de
|
||||
auto-mode (acción sensible) y no se intentó evadirlo — detalle en `PRODUCCION.md`.
|
||||
- Regla nueva agregada al orquestador (`project-md-templates/SEGURIDAD-Y-CALIDAD.md`, sección
|
||||
1.6bis + checklist): toda pantalla de configuración de un servicio externo debe incluir un botón
|
||||
de prueba real, para que esta clase de omisión no se repita en este ni otros proyectos.
|
||||
|
||||
## Pendiente (fase 2, sin comprometer lo ya construido)
|
||||
|
||||
- Riesgos e Incidencias como modulos propios (hoy: `risk_level` simple en el proyecto).
|
||||
|
||||
Reference in New Issue
Block a user