UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

49 lines 8.46 kB
import { Injectable } from '@angular/core'; import { of } from 'rxjs'; import { first, switchMap, take } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; import * as i2 from "./cms-page-guard.service"; export class CmsPageGuard { constructor(routingService, cmsService, protectedRoutesGuard, service, routingConfig) { this.routingService = routingService; this.cmsService = cmsService; this.protectedRoutesGuard = protectedRoutesGuard; this.service = service; this.routingConfig = routingConfig; } /** * Tries to load the CMS page data for the anticipated route and returns: * - `true` - if it can be activated * - `false` - if it cannot be activated * - `UrlTree` - if user should be redirected to a given `UrlTree` * * If the route can be activated, it fires additional calculations on the CMS components present on this CMS page, * based on their configuration (`cmsComponents` config). * * For more, see docs of the `CmsPageGuardService.canActivatePage`. */ canActivate(route, state) { return this.protectedRoutesGuard.canActivate(route).pipe(switchMap((canActivate) => canActivate === true ? this.routingService.getNextPageContext().pipe(take(1), switchMap((pageContext) => this.cmsService.getPage(pageContext, this.shouldReload()).pipe(first(), switchMap((pageData) => pageData ? this.service.canActivatePage(pageContext, pageData, route, state) : this.service.canActivateNotFoundPage(pageContext, route, state))))) : of(canActivate))); } /** * Returns whether we should reload the CMS page data, even when it was loaded before. */ shouldReload() { return this.routingConfig.getLoadStrategy() !== "once" /* ONCE */; } } CmsPageGuard.guardName = 'CmsPageGuard'; CmsPageGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CmsPageGuard, deps: [{ token: i1.RoutingService }, { token: i1.CmsService }, { token: i1.ProtectedRoutesGuard }, { token: i2.CmsPageGuardService }, { token: i1.RoutingConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); CmsPageGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CmsPageGuard, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CmsPageGuard, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.RoutingService }, { type: i1.CmsService }, { type: i1.ProtectedRoutesGuard }, { type: i2.CmsPageGuardService }, { type: i1.RoutingConfigService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLXBhZ2UuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1zdHJ1Y3R1cmUvZ3VhcmRzL2Ntcy1wYWdlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU14RCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUNZLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLG9CQUEwQyxFQUMxQyxPQUE0QixFQUM1QixhQUFtQztRQUpuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtJQUM1QyxDQUFDO0lBRUo7Ozs7Ozs7Ozs7T0FVRztJQUNILFdBQVcsQ0FDVCxLQUFnQyxFQUNoQyxLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN0RCxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUN4QixXQUFXLEtBQUssSUFBSTtZQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVELEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ3JCLFFBQVE7Z0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUMxQixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFDTCxLQUFLLENBQ047Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQ2xDLFdBQVcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxDQUNOLENBQ04sQ0FDRixDQUNGLENBQ0Y7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUNwQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsc0JBQTJCLENBQUM7SUFDekUsQ0FBQzs7QUE1RE0sc0JBQVMsR0FBRyxjQUFjLENBQUM7eUdBRHZCLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBDbXNBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDbXNTZXJ2aWNlLFxuICBQcm90ZWN0ZWRSb3V0ZXNHdWFyZCxcbiAgUm91dGVMb2FkU3RyYXRlZ3ksXG4gIFJvdXRpbmdDb25maWdTZXJ2aWNlLFxuICBSb3V0aW5nU2VydmljZSxcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ21zUGFnZUd1YXJkU2VydmljZSB9IGZyb20gJy4vY21zLXBhZ2UtZ3VhcmQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDbXNQYWdlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIHN0YXRpYyBndWFyZE5hbWUgPSAnQ21zUGFnZUd1YXJkJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwcm90ZWN0ZWRSb3V0ZXNHdWFyZDogUHJvdGVjdGVkUm91dGVzR3VhcmQsXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U6IENtc1BhZ2VHdWFyZFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJvdXRpbmdDb25maWc6IFJvdXRpbmdDb25maWdTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogVHJpZXMgdG8gbG9hZCB0aGUgQ01TIHBhZ2UgZGF0YSBmb3IgdGhlIGFudGljaXBhdGVkIHJvdXRlIGFuZCByZXR1cm5zOlxuICAgKiAtIGB0cnVlYCAtIGlmIGl0IGNhbiBiZSBhY3RpdmF0ZWRcbiAgICogLSBgZmFsc2VgIC0gaWYgaXQgY2Fubm90IGJlIGFjdGl2YXRlZFxuICAgKiAtIGBVcmxUcmVlYCAtIGlmIHVzZXIgc2hvdWxkIGJlIHJlZGlyZWN0ZWQgdG8gYSBnaXZlbiBgVXJsVHJlZWBcbiAgICpcbiAgICogSWYgdGhlIHJvdXRlIGNhbiBiZSBhY3RpdmF0ZWQsIGl0IGZpcmVzIGFkZGl0aW9uYWwgY2FsY3VsYXRpb25zIG9uIHRoZSBDTVMgY29tcG9uZW50cyBwcmVzZW50IG9uIHRoaXMgQ01TIHBhZ2UsXG4gICAqIGJhc2VkIG9uIHRoZWlyIGNvbmZpZ3VyYXRpb24gKGBjbXNDb21wb25lbnRzYCBjb25maWcpLlxuICAgKlxuICAgKiBGb3IgbW9yZSwgc2VlIGRvY3Mgb2YgdGhlIGBDbXNQYWdlR3VhcmRTZXJ2aWNlLmNhbkFjdGl2YXRlUGFnZWAuXG4gICAqL1xuICBjYW5BY3RpdmF0ZShcbiAgICByb3V0ZTogQ21zQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvdGVjdGVkUm91dGVzR3VhcmQuY2FuQWN0aXZhdGUocm91dGUpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNhbkFjdGl2YXRlKSA9PlxuICAgICAgICBjYW5BY3RpdmF0ZSA9PT0gdHJ1ZVxuICAgICAgICAgID8gdGhpcy5yb3V0aW5nU2VydmljZS5nZXROZXh0UGFnZUNvbnRleHQoKS5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHBhZ2VDb250ZXh0KSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY21zU2VydmljZS5nZXRQYWdlKHBhZ2VDb250ZXh0LCB0aGlzLnNob3VsZFJlbG9hZCgpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocGFnZURhdGEpID0+XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlcnZpY2UuY2FuQWN0aXZhdGVQYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZXJ2aWNlLmNhbkFjdGl2YXRlTm90Rm91bmRQYWdlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBvZihjYW5BY3RpdmF0ZSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB3ZSBzaG91bGQgcmVsb2FkIHRoZSBDTVMgcGFnZSBkYXRhLCBldmVuIHdoZW4gaXQgd2FzIGxvYWRlZCBiZWZvcmUuXG4gICAqL1xuICBwcml2YXRlIHNob3VsZFJlbG9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0aW5nQ29uZmlnLmdldExvYWRTdHJhdGVneSgpICE9PSBSb3V0ZUxvYWRTdHJhdGVneS5PTkNFO1xuICB9XG59XG4iXX0=