moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
98 lines • 8.23 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, InjectionToken, Injector } from '@angular/core';
import { PageStateService } from './page-state.service';
import * as i0 from "@angular/core";
import * as i1 from "./page-state.service";
/** @type {?} */
export const START_PAGE_URL = new InjectionToken('StartPageUrl');
/** @type {?} */
export const BYPASS_GUARDS = new InjectionToken('ByPassGuards');
/**
* Default page guard service, ByPassGuards & StartPageUrl are injected only if not extending service
*
* \@example
*
* providers: [
* ...
* { provide: ByPassGuards, useValue: environment.bypassGuards },
* { provide: StartPageUrl, useValue: CREATE_FACILITY_PAGES.HOME.fullpath },
* DefaultPageGuardService
* { provide: AbstractPageGuardService, useExisting: DefaultPageGuardService },
* LoadPageGuardService
* ]
*
*/
export class DefaultPageGuardService {
/**
* @param {?} pageStateService
* @param {?} injector
*/
constructor(pageStateService, injector) {
this.pageStateService = pageStateService;
this.injector = injector;
this.bypassGuards = false;
this.startPageUrl = '';
}
/**
* @return {?}
*/
canBypassGuards() {
/** @type {?} */
const bypass = this.injector.get(BYPASS_GUARDS);
return bypass ? bypass : this.bypassGuards;
}
/**
* @param {?} url
* @return {?}
*/
canNavigateToUrl(url) {
/** @type {?} */
const startUrl = this.injector.get(START_PAGE_URL);
/** @type {?} */
const _startUrl = startUrl ? startUrl : this.startPageUrl;
/** @type {?} */
const containStartUrl = url.includes(_startUrl);
// Empty list allow navigation to first page
if (this.pageStateService.pageListIsClear()) {
// Trying to navigate to start page
if (containStartUrl) {
return true;
}
// Redirect to start page
this.pageStateService.navigateByUrl(_startUrl);
return false;
}
return this.pageStateService.canNavigateToPage(url);
}
}
DefaultPageGuardService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
DefaultPageGuardService.ctorParameters = () => [
{ type: PageStateService },
{ type: Injector }
];
/** @nocollapse */ DefaultPageGuardService.ngInjectableDef = i0.defineInjectable({ factory: function DefaultPageGuardService_Factory() { return new DefaultPageGuardService(i0.inject(i1.PageStateService), i0.inject(i0.INJECTOR)); }, token: DefaultPageGuardService, providedIn: "root" });
if (false) {
/** @type {?} */
DefaultPageGuardService.prototype.bypassGuards;
/** @type {?} */
DefaultPageGuardService.prototype.startPageUrl;
/**
* @type {?}
* @private
*/
DefaultPageGuardService.prototype.pageStateService;
/**
* @type {?}
* @private
*/
DefaultPageGuardService.prototype.injector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wYWdlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9kZWZhdWx0LXBhZ2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBR3hELE1BQU0sT0FBTyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQVUsY0FBYyxDQUFFOztBQUMxRSxNQUFNLE9BQU8sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFXLGNBQWMsQ0FBRTs7Ozs7Ozs7Ozs7Ozs7OztBQXFCMUUsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7SUFLbEMsWUFBcUIsZ0JBQWtDLEVBQVUsUUFBa0I7UUFBOUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFIbkYsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBVyxFQUFFLENBQUM7SUFFNkQsQ0FBQzs7OztJQUVqRixlQUFlOztjQUVkLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBRSxhQUFhLENBQUU7UUFFakQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QyxDQUFDOzs7OztJQUVNLGdCQUFnQixDQUFFLEdBQVc7O2NBRTVCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBRSxjQUFjLENBQUU7O2NBQzlDLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7O2NBQ25ELGVBQWUsR0FBWSxHQUFHLENBQUMsUUFBUSxDQUFFLFNBQVMsQ0FBRTtRQUUxRCw0Q0FBNEM7UUFDNUMsSUFBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEVBQUc7WUFFN0MsbUNBQW1DO1lBQ25DLElBQUssZUFBZSxFQUFHO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQseUJBQXlCO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUUsU0FBUyxDQUFFLENBQUM7WUFDakQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFFLEdBQUcsQ0FBRSxDQUFDO0lBQ3hELENBQUM7OztZQXJDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUF4QlEsZ0JBQWdCO1lBRFksUUFBUTs7Ozs7SUE0QjNDLCtDQUE4Qjs7SUFDOUIsK0NBQTBCOzs7OztJQUViLG1EQUEwQzs7Ozs7SUFBRSwyQ0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZVN0YXRlU2VydmljZSB9IGZyb20gJy4vcGFnZS1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdC1wYWdlLWd1YXJkLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNUQVJUX1BBR0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oICdTdGFydFBhZ2VVcmwnICk7XHJcbmV4cG9ydCBjb25zdCBCWVBBU1NfR1VBUkRTID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCAnQnlQYXNzR3VhcmRzJyApO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgcGFnZSBndWFyZCBzZXJ2aWNlLCBCeVBhc3NHdWFyZHMgJiBTdGFydFBhZ2VVcmwgYXJlIGluamVjdGVkIG9ubHkgaWYgbm90IGV4dGVuZGluZyBzZXJ2aWNlXHJcbiAqXHJcbiAqICBAZXhhbXBsZVxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgLi4uXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgeyBwcm92aWRlOiBCeVBhc3NHdWFyZHMsIHVzZVZhbHVlOiBlbnZpcm9ubWVudC5ieXBhc3NHdWFyZHMgfSxcclxuICogICAgICAgICAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IFN0YXJ0UGFnZVVybCwgdXNlVmFsdWU6IENSRUFURV9GQUNJTElUWV9QQUdFUy5IT01FLmZ1bGxwYXRoIH0sXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFBhZ2VHdWFyZFNlcnZpY2VcclxuICogICAgICAgICAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSwgdXNlRXhpc3Rpbmc6IERlZmF1bHRQYWdlR3VhcmRTZXJ2aWNlIH0sXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFBhZ2VHdWFyZFNlcnZpY2VcclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRQYWdlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlIHtcclxuXHJcbiAgYnlwYXNzR3VhcmRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhcnRQYWdlVXJsOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgcGFnZVN0YXRlU2VydmljZTogUGFnZVN0YXRlU2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IgKSB7fVxyXG5cclxuICBwdWJsaWMgY2FuQnlwYXNzR3VhcmRzKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGNvbnN0IGJ5cGFzcyA9IHRoaXMuaW5qZWN0b3IuZ2V0KCBCWVBBU1NfR1VBUkRTICk7XHJcblxyXG4gICAgcmV0dXJuIGJ5cGFzcyA/IGJ5cGFzcyA6IHRoaXMuYnlwYXNzR3VhcmRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbk5hdmlnYXRlVG9VcmwoIHVybDogc3RyaW5nICk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0VXJsID0gdGhpcy5pbmplY3Rvci5nZXQoIFNUQVJUX1BBR0VfVVJMICk7XHJcbiAgICBjb25zdCBfc3RhcnRVcmwgPSBzdGFydFVybCA/IHN0YXJ0VXJsIDogdGhpcy5zdGFydFBhZ2VVcmw7XHJcbiAgICBjb25zdCBjb250YWluU3RhcnRVcmw6IGJvb2xlYW4gPSB1cmwuaW5jbHVkZXMoIF9zdGFydFVybCApO1xyXG5cclxuICAgIC8vIEVtcHR5IGxpc3QgYWxsb3cgbmF2aWdhdGlvbiB0byBmaXJzdCBwYWdlXHJcbiAgICBpZiAoIHRoaXMucGFnZVN0YXRlU2VydmljZS5wYWdlTGlzdElzQ2xlYXIoKSApIHtcclxuXHJcbiAgICAgIC8vIFRyeWluZyB0byBuYXZpZ2F0ZSB0byBzdGFydCBwYWdlXHJcbiAgICAgIGlmICggY29udGFpblN0YXJ0VXJsICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZWRpcmVjdCB0byBzdGFydCBwYWdlXHJcbiAgICAgIHRoaXMucGFnZVN0YXRlU2VydmljZS5uYXZpZ2F0ZUJ5VXJsKCBfc3RhcnRVcmwgKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnBhZ2VTdGF0ZVNlcnZpY2UuY2FuTmF2aWdhdGVUb1BhZ2UoIHVybCApO1xyXG4gIH1cclxufVxyXG4iXX0=