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 +2 -0
- package/esm2022/lib/interceptors/auth.interceptor.mjs +15 -9
- package/fesm2022/ng-easycommerce-v18.mjs +14 -8
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/checkout-ec/dataform-ec/dataform-ec-single/dataform-ec-single.component.d.ts +1 -1
- package/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.d.ts +1 -1
- package/lib/ec-services/analytics/google-analytics.service.d.ts +1 -1
- package/lib/ec-services/analytics/gtm.service.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -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);
|
|
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
|
-
|
|
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
|
-
//
|
|
42
|
-
//
|
|
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
|
-
|
|
77
|
+
// Pasamos authReq al manejador de errores
|
|
78
|
+
return next(authReq).pipe(catchError((err) => handleAuthError(err, authReq)));
|
|
74
79
|
}
|
|
75
|
-
|
|
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,
|
|
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);
|
|
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
|
-
|
|
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
|
-
//
|
|
23707
|
-
//
|
|
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
|
-
|
|
23742
|
+
// Pasamos authReq al manejador de errores
|
|
23743
|
+
return next(authReq).pipe(catchError$1((err) => handleAuthError(err, authReq)));
|
|
23739
23744
|
}
|
|
23740
|
-
|
|
23745
|
+
// Pasamos req al manejador de errores
|
|
23746
|
+
return next(req).pipe(catchError$1((err) => handleAuthError(err, req)));
|
|
23741
23747
|
};
|
|
23742
23748
|
|
|
23743
23749
|
/**
|