UNPKG

@spartacus/core

Version:

Spartacus - the core framework

80 lines 12.8 kB
import { HttpResponse, } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { combineLatest } from 'rxjs'; import { switchMap, take, tap } from 'rxjs/operators'; import { ANONYMOUS_CONSENTS_HEADER, ANONYMOUS_CONSENT_STATUS, } from '../../model/index'; import * as i0 from "@angular/core"; import * as i1 from "../facade/anonymous-consents.service"; import * as i2 from "../../auth/index"; import * as i3 from "../../occ/services/occ-endpoints.service"; import * as i4 from "../config/anonymous-consents-config"; export class AnonymousConsentsInterceptor { constructor(anonymousConsentsService, authService, occEndpoints, config) { this.anonymousConsentsService = anonymousConsentsService; this.authService = authService; this.occEndpoints = occEndpoints; this.config = config; } intercept(request, next) { return combineLatest([ this.anonymousConsentsService.getConsents(), this.authService.isUserLoggedIn(), ]).pipe(take(1), switchMap(([consents, isUserLoggedIn]) => { if (!this.isOccUrl(request.url)) { return next.handle(request); } const clonedRequest = this.handleRequest(consents, request); return next.handle(clonedRequest).pipe(tap((event) => { var _a; if (event instanceof HttpResponse && ((_a = event.url) !== null && _a !== void 0 ? _a : '').startsWith(this.occEndpoints.buildUrl('anonymousConsentTemplates'))) { this.handleResponse(isUserLoggedIn, event.headers.get(ANONYMOUS_CONSENTS_HEADER), consents); } })); })); } handleResponse(isUserLoggedIn, newRawConsents, previousConsents) { if (!isUserLoggedIn && newRawConsents) { let newConsents = []; newConsents = this.anonymousConsentsService.decodeAndDeserialize(newRawConsents); newConsents = this.giveRequiredConsents(newConsents); if (this.anonymousConsentsService.consentsUpdated(newConsents, previousConsents)) { this.anonymousConsentsService.setConsents(newConsents); } } } handleRequest(consents, request) { if (!consents) { return request; } const rawConsents = this.anonymousConsentsService.serializeAndEncode(consents); return request.clone({ setHeaders: { [ANONYMOUS_CONSENTS_HEADER]: rawConsents, }, }); } isOccUrl(url) { return url.includes(this.occEndpoints.getBaseUrl()); } giveRequiredConsents(consents) { const givenConsents = [...consents]; if (Boolean(this.config.anonymousConsents) && Boolean(this.config.anonymousConsents.requiredConsents)) { for (const consent of givenConsents) { if (this.config.anonymousConsents.requiredConsents.includes(consent.templateCode)) { consent.consentState = ANONYMOUS_CONSENT_STATUS.GIVEN; } } } return givenConsents; } } AnonymousConsentsInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AnonymousConsentsInterceptor, deps: [{ token: i1.AnonymousConsentsService }, { token: i2.AuthService }, { token: i3.OccEndpointsService }, { token: i4.AnonymousConsentsConfig }], target: i0.ɵɵFactoryTarget.Injectable }); AnonymousConsentsInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AnonymousConsentsInterceptor, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: AnonymousConsentsInterceptor, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return [{ type: i1.AnonymousConsentsService }, { type: i2.AuthService }, { type: i3.OccEndpointsService }, { type: i4.AnonymousConsentsConfig }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5vbnltb3VzLWNvbnNlbnRzLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvYW5vbnltb3VzLWNvbnNlbnRzL2h0dHAtaW50ZXJjZXB0b3JzL2Fub255bW91cy1jb25zZW50cy1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0wsWUFBWSxHQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsd0JBQXdCLEdBQ3pCLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQU0zQixNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQ1Usd0JBQWtELEVBQ2xELFdBQXdCLEVBQ3hCLFlBQWlDLEVBQ2pDLE1BQStCO1FBSC9CLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQXlCO0lBQ3RDLENBQUM7SUFFSixTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRTtZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRTtTQUNsQyxDQUFDLENBQUMsSUFBSSxDQUNMLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lB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bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cFJlc3BvbnNlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC9pbmRleCc7XG5pbXBvcnQge1xuICBBbm9ueW1vdXNDb25zZW50LFxuICBBTk9OWU1PVVNfQ09OU0VOVFNfSEVBREVSLFxuICBBTk9OWU1PVVNfQ09OU0VOVF9TVEFUVVMsXG59IGZyb20gJy4uLy4uL21vZGVsL2luZGV4JztcbmltcG9ydCB7IE9jY0VuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9vY2Mvc2VydmljZXMvb2NjLWVuZHBvaW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFub255bW91c0NvbnNlbnRzQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2Fub255bW91cy1jb25zZW50cy1jb25maWcnO1xuaW1wb3J0IHsgQW5vbnltb3VzQ29uc2VudHNTZXJ2aWNlIH0gZnJvbSAnLi4vZmFjYWRlL2Fub255bW91cy1jb25zZW50cy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBbm9ueW1vdXNDb25zZW50c0ludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbm9ueW1vdXNDb25zZW50c1NlcnZpY2U6IEFub255bW91c0NvbnNlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIG9jY0VuZHBvaW50czogT2NjRW5kcG9pbnRzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZzogQW5vbnltb3VzQ29uc2VudHNDb25maWdcbiAgKSB7fVxuXG4gIGludGVyY2VwdChcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFub255bW91c0NvbnNlbnRzU2VydmljZS5nZXRDb25zZW50cygpLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5pc1VzZXJMb2dnZWRJbigpLFxuICAgIF0pLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKChbY29uc2VudHMsIGlzVXNlckxvZ2dlZEluXSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNPY2NVcmwocmVxdWVzdC51cmwpKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xvbmVkUmVxdWVzdCA9IHRoaXMuaGFuZGxlUmVxdWVzdChjb25zZW50cywgcmVxdWVzdCk7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjbG9uZWRSZXF1ZXN0KS5waXBlKFxuICAgICAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgJiZcbiAgICAgICAgICAgICAgKGV2ZW50LnVybCA/PyAnJykuc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICB0aGlzLm9jY0VuZHBvaW50cy5idWlsZFVybCgnYW5vbnltb3VzQ29uc2VudFRlbXBsYXRlcycpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFxuICAgICAgICAgICAgICAgIGlzVXNlckxvZ2dlZEluLFxuICAgICAgICAgICAgICAgIGV2ZW50LmhlYWRlcnMuZ2V0KEFOT05ZTU9VU19DT05TRU5UU19IRUFERVIpLFxuICAgICAgICAgICAgICAgIGNvbnNlbnRzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2UoXG4gICAgaXNVc2VyTG9nZ2VkSW46IGJvb2xlYW4sXG4gICAgbmV3UmF3Q29uc2VudHM6IHN0cmluZyxcbiAgICBwcmV2aW91c0NvbnNlbnRzOiBBbm9ueW1vdXNDb25zZW50W11cbiAgKTogdm9pZCB7XG4gICAgaWYgKCFpc1VzZXJMb2dnZWRJbiAmJiBuZXdSYXdDb25zZW50cykge1xuICAgICAgbGV0IG5ld0NvbnNlbnRzOiBBbm9ueW1vdXNDb25zZW50W10gPSBbXTtcbiAgICAgIG5ld0NvbnNlbnRzID1cbiAgICAgICAgdGhpcy5hbm9ueW1vdXNDb25zZW50c1NlcnZpY2UuZGVjb2RlQW5kRGVzZXJpYWxpemUobmV3UmF3Q29uc2VudHMpO1xuICAgICAgbmV3Q29uc2VudHMgPSB0aGlzLmdpdmVSZXF1aXJlZENvbnNlbnRzKG5ld0NvbnNlbnRzKTtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFub255bW91c0NvbnNlbnRzU2VydmljZS5jb25zZW50c1VwZGF0ZWQoXG4gICAgICAgICAgbmV3Q29uc2VudHMsXG4gICAgICAgICAgcHJldmlvdXNDb25zZW50c1xuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5hbm9ueW1vdXNDb25zZW50c1NlcnZpY2Uuc2V0Q29uc2VudHMobmV3Q29uc2VudHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVxdWVzdChcbiAgICBjb25zZW50czogQW5vbnltb3VzQ29uc2VudFtdLFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT5cbiAgKTogSHR0cFJlcXVlc3Q8YW55PiB7XG4gICAgaWYgKCFjb25zZW50cykge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3Q29uc2VudHMgPVxuICAgICAgdGhpcy5hbm9ueW1vdXNDb25zZW50c1NlcnZpY2Uuc2VyaWFsaXplQW5kRW5jb2RlKGNvbnNlbnRzKTtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgIFtBTk9OWU1PVVNfQ09OU0VOVFNfSEVBREVSXTogcmF3Q29uc2VudHMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09jY1VybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1cmwuaW5jbHVkZXModGhpcy5vY2NFbmRwb2ludHMuZ2V0QmFzZVVybCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2l2ZVJlcXVpcmVkQ29uc2VudHMoXG4gICAgY29uc2VudHM6IEFub255bW91c0NvbnNlbnRbXVxuICApOiBBbm9ueW1vdXNDb25zZW50W10ge1xuICAgIGNvbnN0IGdpdmVuQ29uc2VudHMgPSBbLi4uY29uc2VudHNdO1xuXG4gICAgaWYgKFxuICAgICAgQm9vbGVhbih0aGlzLmNvbmZpZy5hbm9ueW1vdXNDb25zZW50cykgJiZcbiAgICAgIEJvb2xlYW4odGhpcy5jb25maWcuYW5vbnltb3VzQ29uc2VudHMucmVxdWlyZWRDb25zZW50cylcbiAgICApIHtcbiAgICAgIGZvciAoY29uc3QgY29uc2VudCBvZiBnaXZlbkNvbnNlbnRzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmNvbmZpZy5hbm9ueW1vdXNDb25zZW50cy5yZXF1aXJlZENvbnNlbnRzLmluY2x1ZGVzKFxuICAgICAgICAgICAgY29uc2VudC50ZW1wbGF0ZUNvZGVcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnNlbnQuY29uc2VudFN0YXRlID0gQU5PTllNT1VTX0NPTlNFTlRfU1RBVFVTLkdJVkVOO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBnaXZlbkNvbnNlbnRzO1xuICB9XG59XG4iXX0=