fix: version 2.10.1 -- "Probar correo" tiraba Error interno si la clave SMTP no descifraba

El decrypt() de la clave SMTP guardada estaba fuera del try/catch tanto en testSmtpConfig
(el boton "Probar") como en getSmtpConfigInternal (usado por el mailer real para forgot-
password, registro, invitaciones). Si ENCRYPTION_KEY no coincide con la que se uso para
guardar -- el caso documentado de exilaser, que recibio un dump de LinkedCorp con su propia
clave -- el fallo de decrypt() se propagaba sin control: "Error interno" generico en el boton
de prueba, y un crash silencioso en el envio real en vez de la degradacion a modo dev que el
propio comentario del codigo promete. Ambos casos ahora devuelven un mensaje claro / degradan
correctamente.

De paso se agrega `app.set('trust proxy', 1)`: la app corre detras de Nginx Proxy Manager pero
Express no lo sabia, asi que express-rate-limit usaba la IP del proxy para todos los clientes
(un cupo compartido en vez de uno por usuario) y tiraba un aviso de validacion en cada request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-12 12:26:00 -05:00
parent f89bd2414c
commit da4d83e7cc
6 changed files with 40 additions and 5 deletions
+13
View File
@@ -1,5 +1,18 @@
# Changelog - project.linkedcorp.net
## [2.10.1] - 2026-10-12
### Fixed
- "Probar correo" en Configuración → Correo mostraba "Error interno" en vez de un mensaje
claro cuando la clave SMTP guardada no se podía descifrar (por ejemplo, un servidor que
restauró un dump de otro con su propia `ENCRYPTION_KEY` — el caso de exilaser). Ahora indica
que hay que volver a escribir y guardar la clave.
- El mismo problema podía tumbar silenciosamente cualquier envío real (recuperar contraseña,
verificación de registro, invitaciones) en vez de degradar a modo dev como está documentado
que debe pasar sin SMTP utilizable — ya degrada correctamente.
- `trust proxy` configurado en Express (la app corre detrás de Nginx Proxy Manager): sin esto,
el límite de intentos (login, SMTP, etc.) compartía un solo cupo entre todos los usuarios en
vez de uno por persona, y cada request dejaba un aviso de validación en los logs.
## [2.10.0] - 2026-10-12
### Added
- Rediseño del módulo "Notas": ahora se ven como tarjetas (resumen del contenido), con una