Autor: Iker Acevedo¶
Fecha creacion: 2026-11-09 Estado: aceptada
ADR-AUT-001 — Las plantillas de los correos viven dentro de la lambda¶
Autor: Iker Acevedo (decisión) · redactado con Claude Fecha: 2026-11-09 Estado: Aceptada
Contexto¶
El equipo de front diseñó los cuatro correos de seguridad (código de registro, cuenta existente, código de recuperación y aviso de contraseña cambiada) como HTML y texto plano con variables {{nombre}}, {{codigo}}, etc. Había que decidir dónde vive ese HTML y quién lo rellena. Es una decisión de seguridad, no solo de diseño: estos correos llevan el código que da acceso a una cuenta.
Opciones consideradas¶
Opción A — Archivos dentro de la lambda (elegida)¶
Los ocho archivos (01–04, .html y .txt) están en Autenticacion.Nucleo/Plantillas/, viajan embebidos en la dll y el código los rellena.
Pros:
- El diseño y el código que lo rellena se versionan, prueban, despliegan y revierten juntos: no puede haber una plantilla que pida una variable que el código ya no entrega.
- Se prueba con dotnet test (312 pruebas: variables sin reemplazar, codificación del HTML, asuntos, fechas).
- No hay infraestructura nueva ni permisos nuevos (ni ses:CreateTemplate, ni lectura de S3).
- El cambio de un correo de seguridad pasa por un PR con revisión.
Contras: - Cambiar el diseño exige un PR en el repo de Lambdas y un despliegue; front no puede publicarlo solo. Se atenúa porque el cambio es reemplazar archivos, sin tocar código.
Opción B — Plantillas de SES (CreateTemplate y SendTemplatedEmail)¶
Se crean en AWS y el código solo manda las variables.
Pros: cambiar el diseño no requiere desplegar la lambda; es el formato que contempla el LEEME de front. Contras: hay que crearlas y mantenerlas en cada cuenta (PreProd y producción), por Terraform o a mano; el diseño queda fuera de git y de las pruebas; si el código y la plantilla se desincronizan, el envío falla en producción; la reversión son dos pasos distintos.
Opción C — HTML en S3 o en el sitio de front, descargado al enviar¶
Pros: front controla el diseño. Contras: una dependencia de red más en cada envío (si falla, no sale el correo de seguridad); más difícil de probar y revertir; superficie nueva de ataque (quien edite el archivo cambia el correo).
Decisión¶
Opción A. La plantilla es parte del código que protege el acceso a la cuenta; debe tener la misma revisión, pruebas y reversión que el código. Front conserva la autoría del diseño y lo entrega por PR (reemplazar los 8 archivos).
Cómo funciona¶
PlantillaCorreorellena{{variable}}. En el HTML todo valor se codifica (un nombre con<script>no rompe el correo); en el texto va tal cual.- Una variable que la plantilla pide y el código no entrega lanza un error: preferimos no enviar a enviar un correo con
{{codigo}}a la vista. - No se usan plantillas de SES, aunque usamos la misma forma
{{variable}}: si algún día se pasa a la opción B, las plantillas sirven sin cambios.
Consecuencias¶
- Front entrega el diseño por PR al repo de Lambdas. Si pesa, se reevalúa la opción B como historia aparte (costo: Terraform de plantillas en dos cuentas y un paso de despliegue más).
- Cada cambio de diseño es un despliegue de la lambda de registro (rutina: CD de autenticación).
- La ruta vieja
/cambio-passconserva su texto anterior hasta que se retire (M-232).