ng-easycommerce-v18 0.6.29 → 0.6.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ # Version 0.6.30
2
+ - Modificacion `auth.interceptor.ts` para que si da error el endpoint de login desde el modal de inicio de sesion no haga redirección.
1
3
  # Version 0.6.29
2
4
  - Se agrega funcionalidad para poder filtrar por multiple atributos.
3
5
  # Version 0.6.28
@@ -5,7 +5,7 @@ import { ApiConstantsService } from '../constants';
5
5
  import { catchError, throwError } from 'rxjs';
6
6
  export const authInterceptor = (req, next) => {
7
7
  const constants = inject(ApiConstantsService);
8
- const authTokenService = inject(AuthStorageService); // Servicio más sencillo para obtener el token.
8
+ const authTokenService = inject(AuthStorageService);
9
9
  const authToken = authTokenService.getAuthToken();
10
10
  const injector = inject(Injector);
11
11
  const router = inject(Router);
@@ -36,10 +36,16 @@ export const authInterceptor = (req, next) => {
36
36
  localStorage.removeItem('CUSTOMER');
37
37
  localStorage.removeItem('MASTER_CHANNEL');
38
38
  };
39
- const handleAuthError = (err) => {
39
+ // Le pasamos la petición actual (currentReq) a la función de error
40
+ const handleAuthError = (err, currentReq) => {
40
41
  if (err.status === 401 || err.status === 403) {
41
- // Limpieza completa (storage + signals/subjects) para sincronizar UI.
42
- // Se obtiene AuthService de forma diferida para evitar ciclo DI del interceptor.
42
+ // Si el error 401 viene de un intento de login, devolvemos el error al componente directamente
43
+ // y evitamos que limpie el estado o redirija. Esto funciona tanto para el modal como para la vista.
44
+ if (currentReq.url.includes('login-check') || currentReq.url.includes('login')) {
45
+ return throwError(() => err);
46
+ }
47
+ // Si es un 401 de cualquier otra petición (ej: token caducado haciendo otra cosa),
48
+ // entonces sí limpiamos y expulsamos al usuario
43
49
  try {
44
50
  injector.get(AuthService).doLogoutUser();
45
51
  }
@@ -64,14 +70,14 @@ export const authInterceptor = (req, next) => {
64
70
  if (customer?.id) {
65
71
  headers.setHeaders['customer'] = String(customer.id);
66
72
  }
67
- // Don't set Content-Type for multipart requests (FormData) or contact forms —
68
- // Angular HttpClient must set it automatically so the boundary is included.
69
73
  if (req.url.includes('contact-form/response') || req.body instanceof FormData) {
70
74
  delete headers.setHeaders['Content-Type'];
71
75
  }
72
76
  let authReq = req.clone(headers);
73
- return next(authReq).pipe(catchError(handleAuthError));
77
+ // Pasamos authReq al manejador de errores
78
+ return next(authReq).pipe(catchError((err) => handleAuthError(err, authReq)));
74
79
  }
75
- return next(req).pipe(catchError(handleAuthError));
80
+ // Pasamos req al manejador de errores
81
+ return next(req).pipe(catchError((err) => handleAuthError(err, req)));
76
82
  };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXNCLENBQUMsR0FBeUIsRUFBRSxJQUFtQixFQUFrQyxFQUFFO0lBQ3BJLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQywrQ0FBK0M7SUFDcEcsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVqRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUM5QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FB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UUFDbkQsQ0FBQztRQUNELElBQUksT0FBTyxHQUFvQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFN0b3JhZ2VTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cblxuZXhwb3J0IGNvbnN0IGF1dGhJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiA9PiB7XG5cdGNvbnN0IGNvbnN0YW50cyA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTsgICAgXG4gICAgY29uc3QgYXV0aFRva2VuU2VydmljZSA9IGluamVjdChBdXRoU3RvcmFnZVNlcnZpY2UpOyAvLyBTZXJ2aWNpbyBtw6FzIHNlbmNpbGxvIHBhcmEgb2J0ZW5lciBlbCB0b2tlbi5cbiAgICBjb25zdCBhdXRoVG9rZW4gPSBhdXRoVG9rZW5TZXJ2aWNlLmdldEF1dGhUb2tlbigpO1xuXHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXHRjb25zdCBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cblx0Y29uc3QgZ2V0U3RvcmVkQ3VzdG9tZXIgPSAoKSA9PiB7XG5cdFx0Y29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NVU1RPTUVSJyk7XG5cdFx0aWYgKCFzdG9yZWQpIHJldHVybiBudWxsO1xuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShzdG9yZWQpO1xuXHRcdH0gY2F0Y2gge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9O1xuXG5cdGNvbnN0IGNsZWFyQXV0aFN0YXRlID0gKCkgPT4ge1xuXHRcdGF1dGhUb2tlblNlcnZpY2Uuc2V0QXV0aFRva2VuKG51bGwpO1xuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdVU0VSJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0VYUElSQVRFU19JTicpO1xuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdKV1RfVE9LRU4nKTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnUkVGUkVTSF9UT0tFTicpO1xuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjYXJ0X3Rva2VuJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfb3duZXInKTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbWFpbCcpO1xuXHRcdGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdDSEFOTkVMJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0NIQU5ORUxTRUxMRVInKTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnTE9DQUxFJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0NVU1RPTUVSJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XG5cdH07XG5cdFxuXHRjb25zdCBoYW5kbGVBdXRoRXJyb3IgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuXHRcdGlmIChlcnIuc3RhdHVzID09PSA0MDEgfHwgZXJyLnN0YXR1cyA9PT0gNDAzKSB7XG5cdFx0XHQvLyBMaW1waWV6YSBjb21wbGV0YSAoc3RvcmFnZSArIHNpZ25hbHMvc3ViamVjdHMpIHBhcmEgc2luY3Jvbml6YXIgVUkuXG5cdFx0XHQvLyBTZSBvYnRpZW5lIEF1dGhTZXJ2aWNlIGRlIGZvcm1hIGRpZmVyaWRhIHBhcmEgZXZpdGFyIGNpY2xvIERJIGRlbCBpbnRlcmNlcHRvci5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGluamVjdG9yLmdldChBdXRoU2VydmljZSkuZG9Mb2dvdXRVc2VyKCk7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0Ly8gZmFsbGJhY2s6IGFsIG1lbm9zIGxpbXBpYXIgc3RvcmFnZSB5IHRva2VuIHNpIEF1dGhTZXJ2aWNlIG5vIGVzdMOhIGRpc3BvbmlibGUuXG5cdFx0XHR9XG5cdFx0XHRjbGVhckF1dGhTdGF0ZSgpO1xuXHRcdFx0aWYgKCFyb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy9hdXRoL2xvZ2luJykpIHtcblx0XHRcdFx0cm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvbG9naW4nXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG5cdH07XG5cblx0aWYoYXV0aFRva2VuICYmIHJlcS51cmwuaW5jbHVkZXMoY29uc3RhbnRzLmdldFVybEJhc2UoKSkgJiYgIXJlcS51cmwuaW5jbHVkZXMoJ3Nob3AtYXBpL2xvZ2luLWNoZWNrJykpe1xuXHRcdGNvbnN0IGN1c3RvbWVyID0gZ2V0U3RvcmVkQ3VzdG9tZXIoKTtcblx0XHRsZXQgaGVhZGVycyA9IHtcblx0XHRcdHNldEhlYWRlcnM6IHtcblx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcblx0XHRcdFx0QXV0aG9yaXphdGlvbjogYEJlYXJlciAke2F1dGhUb2tlbn1gXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChjdXN0b21lcj8uaWQpIHtcblx0XHRcdChoZWFkZXJzIGFzIGFueSkuc2V0SGVhZGVyc1snY3VzdG9tZXInXSA9IFN0cmluZyhjdXN0b21lci5pZCk7XG5cdFx0fVxuXG5cdFx0Ly8gRG9uJ3Qgc2V0IENvbnRlbnQtVHlwZSBmb3IgbXVsdGlwYXJ0IHJlcXVlc3RzIChGb3JtRGF0YSkgb3IgY29udGFjdCBmb3JtcyDigJRcblx0XHQvLyBBbmd1bGFyIEh0dHBDbGllbnQgbXVzdCBzZXQgaXQgYXV0b21hdGljYWxseSBzbyB0aGUgYm91bmRhcnkgaXMgaW5jbHVkZWQuXG5cdFx0aWYgKHJlcS51cmwuaW5jbHVkZXMoJ2NvbnRhY3QtZm9ybS9yZXNwb25zZScpIHx8IHJlcS5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcblx0XHRcdGRlbGV0ZSAoaGVhZGVycyBhcyBhbnkpLnNldEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddXG5cdFx0fVxuXHRcdGxldCBhdXRoUmVxOkh0dHBSZXF1ZXN0PGFueT4gPSByZXEuY2xvbmUoaGVhZGVycylcblxuXHRcdHJldHVybiBuZXh0KGF1dGhSZXEpLnBpcGUoY2F0Y2hFcnJvcihoYW5kbGVBdXRoRXJyb3IpKTtcblx0fVxuXG5cdHJldHVybiBuZXh0KHJlcSkucGlwZShjYXRjaEVycm9yKGhhbmRsZUF1dGhFcnJvcikpO1xufTtcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXNCLENBQUMsR0FBeUIsRUFBRSxJQUFtQixFQUFrQyxFQUFFO0lBQ2pJLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUVqRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUMzQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNO1lBQUUs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LENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLElBQUksR0FBRyxDQUFDLElBQUksWUFBWSxRQUFRLEVBQUUsQ0FBQztZQUM1RSxPQUFRLE9BQWUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUNELElBQUksT0FBTyxHQUFvQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpELDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFN0b3JhZ2VTZXJ2aWNlLCBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4gPT4ge1xuICAgIGNvbnN0IGNvbnN0YW50cyA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTsgICAgXG4gICAgY29uc3QgYXV0aFRva2VuU2VydmljZSA9IGluamVjdChBdXRoU3RvcmFnZVNlcnZpY2UpOyBcbiAgICBjb25zdCBhdXRoVG9rZW4gPSBhdXRoVG9rZW5TZXJ2aWNlLmdldEF1dGhUb2tlbigpO1xuICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBjb25zdCBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cbiAgICBjb25zdCBnZXRTdG9yZWRDdXN0b21lciA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NVU1RPTUVSJyk7XG4gICAgICAgIGlmICghc3RvcmVkKSByZXR1cm4gbnVsbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0b3JlZCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY2xlYXJBdXRoU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIGF1dGhUb2tlblNlcnZpY2Uuc2V0QXV0aFRva2VuKG51bGwpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnVVNFUicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnRVhQSVJBVEVTX0lOJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdKV1RfVE9LRU4nKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ1JFRlJFU0hfVE9LRU4nKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfdG9rZW4nKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfb3duZXInKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21haWwnKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0NIQU5ORUwnKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0NIQU5ORUxTRUxMRVInKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ0xPQ0FMRScpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnQ1VTVE9NRVInKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XG4gICAgfTtcbiAgICBcbiAgICAvLyBMZSBwYXNhbW9zIGxhIHBldGljacOzbiBhY3R1YWwgKGN1cnJlbnRSZXEpIGEgbGEgZnVuY2nDs24gZGUgZXJyb3JcbiAgICBjb25zdCBoYW5kbGVBdXRoRXJyb3IgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgY3VycmVudFJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4pID0+IHtcbiAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMSB8fCBlcnIuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gU2kgZWwgZXJyb3IgNDAxIHZpZW5lIGRlIHVuIGludGVudG8gZGUgbG9naW4sIGRldm9sdmVtb3MgZWwgZXJyb3IgYWwgY29tcG9uZW50ZSBkaXJlY3RhbWVudGVcbiAgICAgICAgICAgIC8vIHkgZXZpdGFtb3MgcXVlIGxpbXBpZSBlbCBlc3RhZG8gbyByZWRpcmlqYS4gRXN0byBmdW5jaW9uYSB0YW50byBwYXJhIGVsIG1vZGFsIGNvbW8gcGFyYSBsYSB2aXN0YS5cbiAgICAgICAgICAgIGlmIChjdXJyZW50UmVxLnVybC5pbmNsdWRlcygnbG9naW4tY2hlY2snKSB8fCBjdXJyZW50UmVxLnVybC5pbmNsdWRlcygnbG9naW4nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNpIGVzIHVuIDQwMSBkZSBjdWFscXVpZXIgb3RyYSBwZXRpY2nDs24gKGVqOiB0b2tlbiBjYWR1Y2FkbyBoYWNpZW5kbyBvdHJhIGNvc2EpLFxuICAgICAgICAgICAgLy8gZW50b25jZXMgc8OtIGxpbXBpYW1vcyB5IGV4cHVsc2Ftb3MgYWwgdXN1YXJpb1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UpLmRvTG9nb3V0VXNlcigpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gZmFsbGJhY2s6IGFsIG1lbm9zIGxpbXBpYXIgc3RvcmFnZSB5IHRva2VuIHNpIEF1dGhTZXJ2aWNlIG5vIGVzdMOhIGRpc3BvbmlibGUuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhckF1dGhTdGF0ZSgpO1xuICAgICAgICAgICAgaWYgKCFyb3V0ZXIudXJsLnN0YXJ0c1dpdGgoJy9hdXRoL2xvZ2luJykpIHtcbiAgICAgICAgICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvYXV0aC9sb2dpbiddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgIH07XG5cbiAgICBpZihhdXRoVG9rZW4gJiYgcmVxLnVybC5pbmNsdWRlcyhjb25zdGFudHMuZ2V0VXJsQmFzZSgpKSAmJiAhcmVxLnVybC5pbmNsdWRlcygnc2hvcC1hcGkvbG9naW4tY2hlY2snKSl7XG4gICAgICAgIGNvbnN0IGN1c3RvbWVyID0gZ2V0U3RvcmVkQ3VzdG9tZXIoKTtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXV0aFRva2VufWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VzdG9tZXI/LmlkKSB7XG4gICAgICAgICAgICAoaGVhZGVycyBhcyBhbnkpLnNldEhlYWRlcnNbJ2N1c3RvbWVyJ10gPSBTdHJpbmcoY3VzdG9tZXIuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS51cmwuaW5jbHVkZXMoJ2NvbnRhY3QtZm9ybS9yZXNwb25zZScpIHx8IHJlcS5ib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgICAgICAgIGRlbGV0ZSAoaGVhZGVycyBhcyBhbnkpLnNldEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGF1dGhSZXE6SHR0cFJlcXVlc3Q8YW55PiA9IHJlcS5jbG9uZShoZWFkZXJzKVxuXG4gICAgICAgIC8vIFBhc2Ftb3MgYXV0aFJlcSBhbCBtYW5lamFkb3IgZGUgZXJyb3Jlc1xuICAgICAgICByZXR1cm4gbmV4dChhdXRoUmVxKS5waXBlKGNhdGNoRXJyb3IoKGVycikgPT4gaGFuZGxlQXV0aEVycm9yKGVyciwgYXV0aFJlcSkpKTtcbiAgICB9XG5cbiAgICAvLyBQYXNhbW9zIHJlcSBhbCBtYW5lamFkb3IgZGUgZXJyb3Jlc1xuICAgIHJldHVybiBuZXh0KHJlcSkucGlwZShjYXRjaEVycm9yKChlcnIpID0+IGhhbmRsZUF1dGhFcnJvcihlcnIsIHJlcSkpKTtcbn07Il19
@@ -23670,7 +23670,7 @@ const authGuard = (route, state) => {
23670
23670
 
23671
23671
  const authInterceptor = (req, next) => {
23672
23672
  const constants = inject(ApiConstantsService);
23673
- const authTokenService = inject(AuthStorageService); // Servicio más sencillo para obtener el token.
23673
+ const authTokenService = inject(AuthStorageService);
23674
23674
  const authToken = authTokenService.getAuthToken();
23675
23675
  const injector = inject(Injector);
23676
23676
  const router = inject(Router);
@@ -23701,10 +23701,16 @@ const authInterceptor = (req, next) => {
23701
23701
  localStorage.removeItem('CUSTOMER');
23702
23702
  localStorage.removeItem('MASTER_CHANNEL');
23703
23703
  };
23704
- const handleAuthError = (err) => {
23704
+ // Le pasamos la petición actual (currentReq) a la función de error
23705
+ const handleAuthError = (err, currentReq) => {
23705
23706
  if (err.status === 401 || err.status === 403) {
23706
- // Limpieza completa (storage + signals/subjects) para sincronizar UI.
23707
- // Se obtiene AuthService de forma diferida para evitar ciclo DI del interceptor.
23707
+ // Si el error 401 viene de un intento de login, devolvemos el error al componente directamente
23708
+ // y evitamos que limpie el estado o redirija. Esto funciona tanto para el modal como para la vista.
23709
+ if (currentReq.url.includes('login-check') || currentReq.url.includes('login')) {
23710
+ return throwError(() => err);
23711
+ }
23712
+ // Si es un 401 de cualquier otra petición (ej: token caducado haciendo otra cosa),
23713
+ // entonces sí limpiamos y expulsamos al usuario
23708
23714
  try {
23709
23715
  injector.get(AuthService).doLogoutUser();
23710
23716
  }
@@ -23729,15 +23735,15 @@ const authInterceptor = (req, next) => {
23729
23735
  if (customer?.id) {
23730
23736
  headers.setHeaders['customer'] = String(customer.id);
23731
23737
  }
23732
- // Don't set Content-Type for multipart requests (FormData) or contact forms —
23733
- // Angular HttpClient must set it automatically so the boundary is included.
23734
23738
  if (req.url.includes('contact-form/response') || req.body instanceof FormData) {
23735
23739
  delete headers.setHeaders['Content-Type'];
23736
23740
  }
23737
23741
  let authReq = req.clone(headers);
23738
- return next(authReq).pipe(catchError$1(handleAuthError));
23742
+ // Pasamos authReq al manejador de errores
23743
+ return next(authReq).pipe(catchError$1((err) => handleAuthError(err, authReq)));
23739
23744
  }
23740
- return next(req).pipe(catchError$1(handleAuthError));
23745
+ // Pasamos req al manejador de errores
23746
+ return next(req).pipe(catchError$1((err) => handleAuthError(err, req)));
23741
23747
  };
23742
23748
 
23743
23749
  /**