moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
126 lines • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { AbstractPgCheckService } from './abstract-pg-check.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "./abstract-pg-check.service";
/**
* @deprecated
* Use this service to implement Route Guards in your application. This is for a
* typical form flow, where the user must proceed sequentially from one page to
* the next.
*
* To setup, you must:
*
* 1. Create a service implementing the abstract methods in `AbstractPgService` ("RegistrationService")
* 2. Setup AbstractPgCheckService in NgModule providers, to `useExisting` the service from previous step.
* 3. Add this RouteGuardService to same providers from previous step.
* 4. Configure routes to use RouteGuardService - `canActivate` or `canActivateChild`
* 5. Have each "page" in the form call `setPageIncomplete()` or `setPageComplete()` (from the "RegistrationService")
*
*
* You must make sure to setup AbstractPgCheckService in NgModules correctly.
*
* \@example
* //STEP 2 + STEP 3
* //registration.module.ts
* providers: [
* ...
* { provide: AbstractPgCheckService, useExisting: RegistrationService },
* RouteGuardService
* ]
*
*
* //STEP 4
* //registration-routing.modle.ts
* const routes: Routes = [{
* path: '',
* canActivateChild: [RouteGuardService] //or canActivate
* }
* ...
* ]
*
*
* //STEP 5
* //example.component.ts
* ngOnInit() { this.setPageIncomplete(); }
* continue() { this.setPageComplete(); }
*
*
*/
export class RouteGuardService {
/**
* @param {?} router
* @param {?} service
*/
constructor(router, service) {
this.router = router;
this.service = service;
}
/**
* @param {?} route
* @param {?} state
* @return {?}
*/
canActivate(route, state) {
return this._continue(state.url);
}
/**
* @param {?} next
* @param {?} state
* @return {?}
*/
canActivateChild(next, state) {
return this._continue(state.url);
}
/**
* Logic to determine whether or not allow to continue to next page
* @private
* @param {?} pageUrl
* @return {?}
*/
_continue(pageUrl) {
if (this.service.canBypassGuards()) {
return true;
}
/**
* Pre-requisite has not be completed
*/
if (false === this.service.isPrerequisiteComplete()) {
this.router.navigate([this.service.getStartUrl()]);
return false;
}
if (false === this.service.isPageComplete(pageUrl)) {
return false;
}
return true;
}
}
RouteGuardService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
RouteGuardService.ctorParameters = () => [
{ type: Router },
{ type: AbstractPgCheckService }
];
/** @nocollapse */ RouteGuardService.ngInjectableDef = i0.defineInjectable({ factory: function RouteGuardService_Factory() { return new RouteGuardService(i0.inject(i1.Router), i0.inject(i2.AbstractPgCheckService)); }, token: RouteGuardService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
RouteGuardService.prototype.router;
/**
* @type {?}
* @private
*/
RouteGuardService.prototype.service;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3JvdXRlLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFvQixNQUFNLEVBQXFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlEckUsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUFFNUIsWUFBb0IsTUFBYyxFQUN4QixPQUErQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQXdCO0lBQ3pDLENBQUM7Ozs7OztJQUVELFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7OztJQUVELGdCQUFnQixDQUNkLElBQTRCLEVBQzVCLEtBQTBCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7OztJQUdPLFNBQVMsQ0FBQyxPQUFlO1FBRS9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQ7O1dBRUc7UUFDSCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBM0NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQWxEMEIsTUFBTTtZQUV4QixzQkFBc0I7Ozs7Ozs7O0lBbURqQixtQ0FBc0I7Ozs7O0lBQ2hDLG9DQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlLCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtcGctY2hlY2suc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQGRlcHJlY2F0ZWRcclxuICogVXNlIHRoaXMgc2VydmljZSB0byBpbXBsZW1lbnQgUm91dGUgR3VhcmRzIGluIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgaXMgZm9yIGFcclxuICogdHlwaWNhbCBmb3JtIGZsb3csIHdoZXJlIHRoZSB1c2VyIG11c3QgcHJvY2VlZCBzZXF1ZW50aWFsbHkgZnJvbSBvbmUgcGFnZSB0b1xyXG4gKiB0aGUgbmV4dC5cclxuICpcclxuICogVG8gc2V0dXAsIHlvdSBtdXN0OlxyXG4gKlxyXG4gKiAxLiBDcmVhdGUgYSBzZXJ2aWNlIGltcGxlbWVudGluZyB0aGUgYWJzdHJhY3QgbWV0aG9kcyBpbiBgQWJzdHJhY3RQZ1NlcnZpY2VgIChcIlJlZ2lzdHJhdGlvblNlcnZpY2VcIilcclxuICogMi4gU2V0dXAgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSBpbiBOZ01vZHVsZSBwcm92aWRlcnMsIHRvIGB1c2VFeGlzdGluZ2AgdGhlIHNlcnZpY2UgZnJvbSBwcmV2aW91cyBzdGVwLlxyXG4gKiAzLiBBZGQgdGhpcyBSb3V0ZUd1YXJkU2VydmljZSB0byBzYW1lIHByb3ZpZGVycyBmcm9tIHByZXZpb3VzIHN0ZXAuXHJcbiAqIDQuIENvbmZpZ3VyZSByb3V0ZXMgdG8gdXNlIFJvdXRlR3VhcmRTZXJ2aWNlIC0gYGNhbkFjdGl2YXRlYCBvciBgY2FuQWN0aXZhdGVDaGlsZGBcclxuICogNS4gSGF2ZSBlYWNoIFwicGFnZVwiIGluIHRoZSBmb3JtIGNhbGwgYHNldFBhZ2VJbmNvbXBsZXRlKClgIG9yIGBzZXRQYWdlQ29tcGxldGUoKWAgKGZyb20gdGhlIFwiUmVnaXN0cmF0aW9uU2VydmljZVwiKVxyXG4gKlxyXG4gKlxyXG4gKiBZb3UgbXVzdCBtYWtlIHN1cmUgdG8gc2V0dXAgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSBpbiBOZ01vZHVsZXMgY29ycmVjdGx5LlxyXG4gKlxyXG4gKiAgQGV4YW1wbGVcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDIgKyBTVEVQIDNcclxuICogICAgICAgICAgICAgICAgLy9yZWdpc3RyYXRpb24ubW9kdWxlLnRzXHJcbiAqICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RQZ0NoZWNrU2VydmljZSwgdXNlRXhpc3Rpbmc6IFJlZ2lzdHJhdGlvblNlcnZpY2UgfSxcclxuICogICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZUd1YXJkU2VydmljZVxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqXHJcbiAqXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCA0XHJcbiAqICAgICAgICAgICAgICAgIC8vcmVnaXN0cmF0aW9uLXJvdXRpbmcubW9kbGUudHNcclxuICogICAgICAgICAgICAgICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbe1xyXG4gKiAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICogICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogW1JvdXRlR3VhcmRTZXJ2aWNlXSAvL29yIGNhbkFjdGl2YXRlXHJcbiAqICAgICAgICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgNVxyXG4gKiAgICAgICAgICAgICAgICAvL2V4YW1wbGUuY29tcG9uZW50LnRzXHJcbiAqICAgICAgICAgICAgICAgIG5nT25Jbml0KCkgeyB0aGlzLnNldFBhZ2VJbmNvbXBsZXRlKCk7IH1cclxuICogICAgICAgICAgICAgICAgY29udGludWUoKSB7IHRoaXMuc2V0UGFnZUNvbXBsZXRlKCk7IH1cclxuICpcclxuICpcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZShcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9jb250aW51ZShzdGF0ZS51cmwpO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGVDaGlsZChcclxuICAgIG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludWUoc3RhdGUudXJsKTtcclxuICB9XHJcblxyXG4gIC8qKiBMb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYWxsb3cgdG8gY29udGludWUgdG8gbmV4dCBwYWdlICovXHJcbiAgcHJpdmF0ZSBfY29udGludWUocGFnZVVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jYW5CeXBhc3NHdWFyZHMoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZS1yZXF1aXNpdGUgaGFzIG5vdCBiZSBjb21wbGV0ZWRcclxuICAgICAqL1xyXG4gICAgaWYgKGZhbHNlID09PSB0aGlzLnNlcnZpY2UuaXNQcmVyZXF1aXNpdGVDb21wbGV0ZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnNlcnZpY2UuZ2V0U3RhcnRVcmwoKV0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZhbHNlID09PSB0aGlzLnNlcnZpY2UuaXNQYWdlQ29tcGxldGUocGFnZVVybCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuIl19