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 6.92 kB
import { Injectable } from '@angular/core'; import { OAuthFlow, } from '@spartacus/core'; import { EMPTY, of } from 'rxjs'; import { switchMap, take } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; import * as i2 from "../../../cms-structure/guards/cms-page.guard"; /** * Guards the _login_ route. * * Takes care of routing the user to a auth server login page (if implicit or code flow is used). * In case of Resource Owner Password Flow just renders the page as normal CMS page. */ export class LoginGuard { constructor(authService, authRedirectService, authConfigService, cmsPageGuard) { this.authService = authService; this.authRedirectService = authRedirectService; this.authConfigService = authConfigService; this.cmsPageGuard = cmsPageGuard; } canActivate(route, state) { return this.authService.isUserLoggedIn().pipe(take(1), switchMap((isUserLoggedIn) => { if (this.authConfigService.getOAuthFlow() === OAuthFlow.ResourceOwnerPasswordFlow || isUserLoggedIn) { return this.cmsPageGuard.canActivate(route, state); } else { // Remember the previous url, so we can redirect user to that page after OAuth server callback this.authRedirectService.reportNotAuthGuard(); // This method can trigger redirect to OAuth server that's why we don't return anything in this case const redirected = this.authService.loginWithRedirect(); if (!redirected) { return of(false); } return EMPTY; } })); } } LoginGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginGuard, deps: [{ token: i1.AuthService }, { token: i1.AuthRedirectService }, { token: i1.AuthConfigService }, { token: i2.CmsPageGuard }], target: i0.ɵɵFactoryTarget.Injectable }); LoginGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginGuard, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LoginGuard, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i1.AuthRedirectService }, { type: i1.AuthConfigService }, { type: i2.CmsPageGuard }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1jb21wb25lbnRzL3VzZXIvbG9naW4tcm91dGUvbG9naW4uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8zQyxPQUFPLEVBSUwsU0FBUyxHQUNWLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUdqRDs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQ1ksV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxZQUEwQjtRQUgxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDbkMsQ0FBQztJQUVKLFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUMzQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDM0IsSUFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO2dCQUNuQyxTQUFTLENBQUMseUJBQXlCO2dCQUNyQyxjQUFjLEVBQ2Q7Z0JBQ0EsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsOEZBQThGO2dCQUM5RixJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDOUMsb0dBQW9HO2dCQUNwRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2YsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xCO2dCQUNELE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7dUdBakNVLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBDYW5BY3RpdmF0ZSxcbiAgUm91dGVyU3RhdGVTbmFwc2hvdCxcbiAgVXJsVHJlZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEF1dGhDb25maWdTZXJ2aWNlLFxuICBBdXRoUmVkaXJlY3RTZXJ2aWNlLFxuICBBdXRoU2VydmljZSxcbiAgT0F1dGhGbG93LFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbXNQYWdlR3VhcmQgfSBmcm9tICcuLi8uLi8uLi9jbXMtc3RydWN0dXJlL2d1YXJkcy9jbXMtcGFnZS5ndWFyZCc7XG5cbi8qKlxuICogR3VhcmRzIHRoZSBfbG9naW5fIHJvdXRlLlxuICpcbiAqIFRha2VzIGNhcmUgb2Ygcm91dGluZyB0aGUgdXNlciB0byBhIGF1dGggc2VydmVyIGxvZ2luIHBhZ2UgKGlmIGltcGxpY2l0IG9yIGNvZGUgZmxvdyBpcyB1c2VkKS5cbiAqIEluIGNhc2Ugb2YgUmVzb3VyY2UgT3duZXIgUGFzc3dvcmQgRmxvdyBqdXN0IHJlbmRlcnMgdGhlIHBhZ2UgYXMgbm9ybWFsIENNUyBwYWdlLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXV0aFJlZGlyZWN0U2VydmljZTogQXV0aFJlZGlyZWN0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXV0aENvbmZpZ1NlcnZpY2U6IEF1dGhDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjbXNQYWdlR3VhcmQ6IENtc1BhZ2VHdWFyZFxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmlzVXNlckxvZ2dlZEluKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKGlzVXNlckxvZ2dlZEluKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmF1dGhDb25maWdTZXJ2aWNlLmdldE9BdXRoRmxvdygpID09PVxuICAgICAgICAgICAgT0F1dGhGbG93LlJlc291cmNlT3duZXJQYXNzd29yZEZsb3cgfHxcbiAgICAgICAgICBpc1VzZXJMb2dnZWRJblxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jbXNQYWdlR3VhcmQuY2FuQWN0aXZhdGUocm91dGUsIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgcHJldmlvdXMgdXJsLCBzbyB3ZSBjYW4gcmVkaXJlY3QgdXNlciB0byB0aGF0IHBhZ2UgYWZ0ZXIgT0F1dGggc2VydmVyIGNhbGxiYWNrXG4gICAgICAgICAgdGhpcy5hdXRoUmVkaXJlY3RTZXJ2aWNlLnJlcG9ydE5vdEF1dGhHdWFyZCgpO1xuICAgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNhbiB0cmlnZ2VyIHJlZGlyZWN0IHRvIE9BdXRoIHNlcnZlciB0aGF0J3Mgd2h5IHdlIGRvbid0IHJldHVybiBhbnl0aGluZyBpbiB0aGlzIGNhc2VcbiAgICAgICAgICBjb25zdCByZWRpcmVjdGVkID0gdGhpcy5hdXRoU2VydmljZS5sb2dpbldpdGhSZWRpcmVjdCgpO1xuICAgICAgICAgIGlmICghcmVkaXJlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==