@spartacus/checkout
Version:
Checkout feature library for Spartacus
68 lines • 10.8 kB
JavaScript
import { Injectable } from '@angular/core';
import { B2BUserRole, GlobalMessageType, } from '@spartacus/core';
import { combineLatest } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/core";
import * as i2 from "../services/checkout-config.service";
import * as i3 from "@angular/router";
import * as i4 from "@spartacus/user/account/root";
export class CheckoutAuthGuard {
constructor(authService, authRedirectService, checkoutConfigService, activeCartService, semanticPathService, router, userService, globalMessageService) {
this.authService = authService;
this.authRedirectService = authRedirectService;
this.checkoutConfigService = checkoutConfigService;
this.activeCartService = activeCartService;
this.semanticPathService = semanticPathService;
this.router = router;
this.userService = userService;
this.globalMessageService = globalMessageService;
}
canActivate() {
return combineLatest([
this.authService.isUserLoggedIn(),
this.activeCartService.getAssignedUser(),
this.userService.get(),
this.activeCartService.isStable(),
]).pipe(filter(([, , _user, isStable]) => isStable),
// if the user is authenticated and we have their data, OR if the user is anonymous
filter(([isLoggedIn, , user]) => (!!user && isLoggedIn) || !isLoggedIn), map(([isLoggedIn, cartUser, user]) => {
if (!isLoggedIn) {
return this.handleAnonymousUser(cartUser);
}
else if (user && 'roles' in user) {
return this.handleUserRole(user);
}
return isLoggedIn;
}));
}
handleAnonymousUser(cartUser) {
if (this.activeCartService.isGuestCart()) {
return !!cartUser;
}
this.authRedirectService.saveCurrentNavigationUrl();
if (this.checkoutConfigService.isGuestCheckout()) {
return this.router.createUrlTree([this.semanticPathService.get('login')], { queryParams: { forced: true } });
}
else {
return this.router.parseUrl(this.semanticPathService.get('login'));
}
}
handleUserRole(user) {
const roles = user.roles;
if (roles === null || roles === void 0 ? void 0 : roles.includes(B2BUserRole.CUSTOMER)) {
return true;
}
this.globalMessageService.add({ key: 'checkout.invalid.accountType' }, GlobalMessageType.MSG_TYPE_WARNING);
return this.router.parseUrl(this.semanticPathService.get('home'));
}
}
CheckoutAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutAuthGuard, deps: [{ token: i1.AuthService }, { token: i1.AuthRedirectService }, { token: i2.CheckoutConfigService }, { token: i1.ActiveCartService }, { token: i1.SemanticPathService }, { token: i3.Router }, { token: i4.UserAccountFacade }, { token: i1.GlobalMessageService }], target: i0.ɵɵFactoryTarget.Injectable });
CheckoutAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutAuthGuard, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CheckoutAuthGuard, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i1.AuthRedirectService }, { type: i2.CheckoutConfigService }, { type: i1.ActiveCartService }, { type: i1.SemanticPathService }, { type: i3.Router }, { type: i4.UserAccountFacade }, { type: i1.GlobalMessageService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2ZlYXR1cmUtbGlicy9jaGVja291dC9jb21wb25lbnRzL2d1YXJkcy9jaGVja291dC1hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUtMLFdBQVcsRUFFWCxpQkFBaUIsR0FFbEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU03QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQ1ksV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxpQkFBb0MsRUFDcEMsbUJBQXdDLEVBQ3hDLE1BQWMsRUFDZCxXQUE4QixFQUM5QixvQkFBMEM7UUFQMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7SUFDbkQsQ0FBQztJQUVKLFdBQVc7UUFDVCxPQUFPLGFBQWEsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRTtZQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7U0FDbEMsQ0FBQyxDQUFDLElBQUksQ0FDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQUFBRCxFQUFHLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQzNDLG1GQUFtRjtRQUNuRixNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxBQUFELEVBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUN2RSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO2lCQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRVMsbUJBQW1CLENBQUMsUUFBZTtRQUMzQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN4QyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUM5QixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDdkMsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDbEMsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFUyxjQUFjLENBQUMsSUFBVTtRQUNqQyxNQUFNLEtBQUssR0FBYSxJQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BDLElBQUksS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQzNCLEVBQUUsR0FBRyxFQUFFLDhCQUE4QixFQUFFLEVBQ3ZDLGlCQUFpQixDQUFDLGdCQUFnQixDQUNuQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7OEdBMURVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aXZlQ2FydFNlcnZpY2UsXG4gIEF1dGhSZWRpcmVjdFNlcnZpY2UsXG4gIEF1dGhTZXJ2aWNlLFxuICBCMkJVc2VyLFxuICBCMkJVc2VyUm9sZSxcbiAgR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VUeXBlLFxuICBTZW1hbnRpY1BhdGhTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgVXNlciwgVXNlckFjY291bnRGYWNhZGUgfSBmcm9tICdAc3BhcnRhY3VzL3VzZXIvYWNjb3VudC9yb290JztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2hlY2tvdXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2hlY2tvdXQtY29uZmlnLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGF1dGhSZWRpcmVjdFNlcnZpY2U6IEF1dGhSZWRpcmVjdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNoZWNrb3V0Q29uZmlnU2VydmljZTogQ2hlY2tvdXRDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmVDYXJ0U2VydmljZTogQWN0aXZlQ2FydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlbWFudGljUGF0aFNlcnZpY2U6IFNlbWFudGljUGF0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCB1c2VyU2VydmljZTogVXNlckFjY291bnRGYWNhZGUsXG4gICAgcHJvdGVjdGVkIGdsb2JhbE1lc3NhZ2VTZXJ2aWNlOiBHbG9iYWxNZXNzYWdlU2VydmljZVxuICApIHt9XG5cbiAgY2FuQWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaXNVc2VyTG9nZ2VkSW4oKSxcbiAgICAgIHRoaXMuYWN0aXZlQ2FydFNlcnZpY2UuZ2V0QXNzaWduZWRVc2VyKCksXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldCgpLFxuICAgICAgdGhpcy5hY3RpdmVDYXJ0U2VydmljZS5pc1N0YWJsZSgpLFxuICAgIF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFssICwgX3VzZXIsIGlzU3RhYmxlXSkgPT4gaXNTdGFibGUpLFxuICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBhbmQgd2UgaGF2ZSB0aGVpciBkYXRhLCBPUiBpZiB0aGUgdXNlciBpcyBhbm9ueW1vdXNcbiAgICAgIGZpbHRlcigoW2lzTG9nZ2VkSW4sICwgdXNlcl0pID0+ICghIXVzZXIgJiYgaXNMb2dnZWRJbikgfHwgIWlzTG9nZ2VkSW4pLFxuICAgICAgbWFwKChbaXNMb2dnZWRJbiwgY2FydFVzZXIsIHVzZXJdKSA9PiB7XG4gICAgICAgIGlmICghaXNMb2dnZWRJbikge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFub255bW91c1VzZXIoY2FydFVzZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHVzZXIgJiYgJ3JvbGVzJyBpbiB1c2VyKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXNlclJvbGUodXNlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzTG9nZ2VkSW47XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQW5vbnltb3VzVXNlcihjYXJ0VXNlcj86IFVzZXIpOiBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlQ2FydFNlcnZpY2UuaXNHdWVzdENhcnQoKSkge1xuICAgICAgcmV0dXJuICEhY2FydFVzZXI7XG4gICAgfVxuICAgIHRoaXMuYXV0aFJlZGlyZWN0U2VydmljZS5zYXZlQ3VycmVudE5hdmlnYXRpb25VcmwoKTtcbiAgICBpZiAodGhpcy5jaGVja291dENvbmZpZ1NlcnZpY2UuaXNHdWVzdENoZWNrb3V0KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFxuICAgICAgICBbdGhpcy5zZW1hbnRpY1BhdGhTZXJ2aWNlLmdldCgnbG9naW4nKV0sXG4gICAgICAgIHsgcXVlcnlQYXJhbXM6IHsgZm9yY2VkOiB0cnVlIH0gfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMuc2VtYW50aWNQYXRoU2VydmljZS5nZXQoJ2xvZ2luJykpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVVc2VyUm9sZSh1c2VyOiBVc2VyKTogYm9vbGVhbiB8IFVybFRyZWUge1xuICAgIGNvbnN0IHJvbGVzID0gKDxCMkJVc2VyPnVzZXIpLnJvbGVzO1xuICAgIGlmIChyb2xlcz8uaW5jbHVkZXMoQjJCVXNlclJvbGUuQ1VTVE9NRVIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5nbG9iYWxNZXNzYWdlU2VydmljZS5hZGQoXG4gICAgICB7IGtleTogJ2NoZWNrb3V0LmludmFsaWQuYWNjb3VudFR5cGUnIH0sXG4gICAgICBHbG9iYWxNZXNzYWdlVHlwZS5NU0dfVFlQRV9XQVJOSU5HXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5zZW1hbnRpY1BhdGhTZXJ2aWNlLmdldCgnaG9tZScpKTtcbiAgfVxufVxuIl19