From 6d85e98725d7bc231c4e090ad1359c32b84930e3 Mon Sep 17 00:00:00 2001 From: jmbardallo Date: Fri, 27 Mar 2026 08:37:14 +0100 Subject: [PATCH] =?UTF-8?q?Corregido=20error=20401=20Unauthorized=20en=20l?= =?UTF-8?q?a=20edici=C3=B3n=20de=20men=C3=BAs=20con=20nombres=20que=20cont?= =?UTF-8?q?ienen=20la=20palabra=20'login'.=20Se=20ha=20refinado=20el=20int?= =?UTF-8?q?erceptor=20para=20aplicar=20el=20prefijo=20'Bearer'=20de=20form?= =?UTF-8?q?a=20selectiva=20mediante=20validaci=C3=B3n=20exacta=20del=20pat?= =?UTF-8?q?h=20/auth/login.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ .../src/app/core/services/custom.interceptor.ts | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91b9aee..2b9ed3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog +## [1.2.5] - 2026-03-27 +### Fixed +- Corregido error 401 Unauthorized en la edición de menús con nombres que contienen la palabra "login". Se ha refinado el interceptor para aplicar el prefijo "Bearer" de forma selectiva mediante validación exacta del path `/auth/login`. + ## [1.2.4] - 2026-03-20 ### Added - Se ha mejorado el editor de menus para poder editar directamente la plantilla twig en lugar del html renderizado. diff --git a/ogWebconsole/src/app/core/services/custom.interceptor.ts b/ogWebconsole/src/app/core/services/custom.interceptor.ts index 319a1e4..69768b2 100644 --- a/ogWebconsole/src/app/core/services/custom.interceptor.ts +++ b/ogWebconsole/src/app/core/services/custom.interceptor.ts @@ -12,7 +12,18 @@ export class CustomInterceptor implements HttpInterceptor { const token = localStorage.getItem('loginToken'); let newCloneRequest; - if (req.url.includes('login')) { + // Usamos el objeto URL para ser quirúrgicos y detectar si el PATH es exactamente "/auth/login": + let isLoginPath = false; + try { + // req.url puede ser relativa o absoluta + const url = new URL(req.url, window.location.origin); + isLoginPath = url.pathname === '/auth/login'; + } catch (e) { + // Fallback por si la URL es inválida, aunque no debería ocurrir + isLoginPath = req.url.includes('/auth/login') && !req.url.includes('menu-raw'); + } + + if (isLoginPath) { newCloneRequest = req.clone({ setHeaders: { Authorization: `${token}`