Skip to content

Fix: ajustes de la revisión de contraseña temporal

Agustín Cantero requested to merge pft/fix/revision-contrasenia-temporal into dev

Seguimiento de la revisión del MR 83 y 84.

Cambios

  • code en el 403 de contraseña temporal. El body ahora trae "code":"PASSWORD_CHANGE_REQUIRED", para que el frontend lo distinga de un 403 por permisos sin comparar el texto del message. ApiErrorAttributes lo copia solo cuando el filtro lo pide.
  • Rutas públicas ya no se bloquean. El chequeo de PENDIENTE_DE_ACTIVACION corre con cualquier token válido, así que con el Bearer adjunto, /auth/login, /forgot-password y /reset-password de ese usuario daban 403. Ahora todo /auth/** y POST /reportes/validar quedan permitidos. El test que escribí antes del arreglo falló en POST /auth/login, lo que confirma el bug.
  • EmailService. Los placeholders se reemplazan en un solo pase con regex: un valor con {{OTRA_CLAVE}} (ej. un título escrito por un usuario) ya no se pisa según el orden del Map. Además se cachean las plantillas, se agrupan las constantes PLANTILLA_* y se borra un overload sin uso.
  • Tuteo unificado en los emails. El texto plano de cuatro emails estaba en voseo y su HTML en tuteo; ahora todos van en tuteo neutro, como las plantillas de diseño. Los mensajes de la API (No tienes permisos… junto a Intentá…) quedan fuera y se ven aparte.
  • uploads/ en .gitignore, más un test de que FileStorageService crea la carpeta base en el primer upload.
  • Mensaje de los errores de filtro declarado, no deducido (revisión del MR de formato de errores). Los sendError del proyecto pasan por ApiErrorAttributes.enviarError(...), que declara el mensaje en un atributo del request; solo ese texto llega al cliente. Antes se decidía comparando contra frases en inglés, y el texto de cualquier librería fuera de esa lista se colaba. Se agrega ErrorFormatIntegrationTest (servidor HTTP real con include-message=never, como producción).
  • Tuteo unificado en los mensajes de la API (8 mensajes), como los emails.
  • El campo error sigue con la frase HTTP en inglés a propósito: unificarlo cambia el contrato y hay que coordinarlo con el frontend. Quedó documentado en ApiErrorAttributes.
Edited by Agustín Cantero

Merge request reports

Loading