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
|
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).
|
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)
|
## Pendiente (fase 2, sin comprometer lo ya construido)
|
||||||
|
|
||||||
- Riesgos e Incidencias como modulos propios (hoy: `risk_level` simple en el proyecto).
|
- Riesgos e Incidencias como modulos propios (hoy: `risk_level` simple en el proyecto).
|
||||||
|
|||||||
@@ -86,6 +86,25 @@
|
|||||||
- Verificado en produccion via curl (rechaza clave actual incorrecta con 400; no se cambio la
|
- Verificado en produccion via curl (rechaza clave actual incorrecta con 400; no se cambio la
|
||||||
clave real del superadmin durante la prueba).
|
clave real del superadmin durante la prueba).
|
||||||
|
|
||||||
|
## Actualizacion v1.3.0 (2026-09-06) — boton de prueba en Correo (SMTP)
|
||||||
|
|
||||||
|
- `POST /api/settings/smtp/test` (superadmin, rate-limited) agregado. Redeploy sin cambios de
|
||||||
|
dependencias ni de esquema (`nodemailer` ya estaba desde v1.1.0); PID confirmado distinto en
|
||||||
|
ambos servicios tras el restart.
|
||||||
|
- Verificado en dev de punta a punta (curl + Playwright) antes del deploy: validacion 400 sin
|
||||||
|
host/usuario, y un intento real contra el SMTP interno con credenciales invalidas devuelve el
|
||||||
|
error real del servidor (`certificate has expired`) en vez de un mensaje generico.
|
||||||
|
- En produccion se confirmo: el commit correcto quedo desplegado, ambos servicios reiniciaron
|
||||||
|
limpio (`journalctl` sin errores) y `GET /api/settings/smtp` sin token responde `401` como se
|
||||||
|
espera. **No se verificó el flujo autenticado completo en producción** — minar un JWT válido
|
||||||
|
en el servidor para probarlo fue bloqueado por el clasificador de auto-mode (accion sensible
|
||||||
|
sobre produccion) y no se intento evadirlo; tampoco se reseteo la clave del superadmin real
|
||||||
|
solo para probar. Si se quiere una verificacion end-to-end en produccion, hacerlo manualmente
|
||||||
|
desde el navegador con la sesion real del superadmin.
|
||||||
|
- Regla nueva agregada al orquestador (`project-md-templates/SEGURIDAD-Y-CALIDAD.md`, seccion
|
||||||
|
1.6bis y checklist): toda pantalla de configuracion de un servicio externo debe tener un boton
|
||||||
|
de prueba real, no solo "Guardar".
|
||||||
|
|
||||||
## Comandos utiles
|
## Comandos utiles
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user