portal-route-guard
Version:
Wistron I4.0 Portal Route Guard
54 lines • 5.51 kB
JavaScript
/**
* 專案名稱: portal-route-guard
* 部門代號: MLD500
* 檔案說明: Portal 訪問服務
* @CREATE Monday, 14th March 2022 9:36:03 am
* @author Steve CY Lin
* @contact Steve_CY_Lin@wistron.com #1342
* -----------------------------------------------------------------------------
* @NOTE
*/
import { Inject, Injectable } from '@angular/core';
import { PORTAL_GUARD_OPTION } from './portal-guard-option.token';
import * as i0 from "@angular/core";
/**
* Portal 訪問服務
*/
export class PortalAccessmentService {
/**
* @param options Portal 路由守衛配置
*/
constructor(options) {
this.options = options;
/**
* Portal 存取必填欄位
*/
this.essentialKeys = ['userID', 'token', 'sysId', 'site', 'plant'];
this.essentialKeys = this.options?.essentialKeys || this.essentialKeys;
}
/**
* 是否允許訪忘該頁面
*
* @method public
* @param route 路由快照
* @return 回傳是否允許訪忘該頁面
*/
canActivate(route) {
// 檢視是否允許訪問頁面
return this.essentialKeys
.map((key) => route.queryParamMap.keys.includes(key))
.every((result) => result === true);
}
}
PortalAccessmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PortalAccessmentService, deps: [{ token: PORTAL_GUARD_OPTION }], target: i0.ɵɵFactoryTarget.Injectable });
PortalAccessmentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PortalAccessmentService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: PortalAccessmentService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [PORTAL_GUARD_OPTION]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWFjY2Vzc21lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BvcnRhbC1yb3V0ZS1ndWFyZC9zcmMvbGliL3NlcnZpY2UvcG9ydGFsLWFjY2Vzc21lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFbEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBTWxDOztPQUVHO0lBQ0gsWUFDZ0QsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFUMUU7O1dBRUc7UUFDSyxrQkFBYSxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBUXBFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVyxDQUFDLEtBQTZCO1FBQzlDLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BELEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O29IQTNCVSx1QkFBdUIsa0JBVXhCLG1CQUFtQjt3SEFWbEIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOWwiOahiOWQjeeose+8miBwb3J0YWwtcm91dGUtZ3VhcmRcbiAqIOmDqOmWgOS7o+iZn++8miBNTEQ1MDBcbiAqIOaqlOahiOiqquaYju+8miBQb3J0YWwg6Kiq5ZWP5pyN5YuZXG4gKiBAQ1JFQVRFIE1vbmRheSwgMTR0aCBNYXJjaCAyMDIyIDk6MzY6MDMgYW1cbiAqIEBhdXRob3IgU3RldmUgQ1kgTGluXG4gKiBAY29udGFjdCBTdGV2ZV9DWV9MaW5Ad2lzdHJvbi5jb20gIzEzNDJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBATk9URVxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUG9ydGFsR3VhcmRPcHRpb24gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgUE9SVEFMX0dVQVJEX09QVElPTiB9IGZyb20gJy4vcG9ydGFsLWd1YXJkLW9wdGlvbi50b2tlbic7XG5cbi8qKlxuICogUG9ydGFsIOioquWVj+acjeWLmVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUG9ydGFsQWNjZXNzbWVudFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIC8qKlxuICAgKiBQb3J0YWwg5a2Y5Y+W5b+F5aGr5qyE5L2NXG4gICAqL1xuICBwcml2YXRlIGVzc2VudGlhbEtleXMgPSBbJ3VzZXJJRCcsICd0b2tlbicsICdzeXNJZCcsICdzaXRlJywgJ3BsYW50J107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvcHRpb25zICAgICAgICAgICBQb3J0YWwg6Lev55Sx5a6I6KGb6YWN572uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBPUlRBTF9HVUFSRF9PUFRJT04pIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUG9ydGFsR3VhcmRPcHRpb25cbiAgKSB7XG4gICAgdGhpcy5lc3NlbnRpYWxLZXlzID0gdGhpcy5vcHRpb25zPy5lc3NlbnRpYWxLZXlzIHx8IHRoaXMuZXNzZW50aWFsS2V5cztcbiAgfVxuXG4gIC8qKlxuICAgKiDmmK/lkKblhYHoqLHoqKrlv5joqbLpoIHpnaJcbiAgICpcbiAgICogQG1ldGhvZCBwdWJsaWNcbiAgICogQHBhcmFtIHJvdXRlIOi3r+eUseW/q+eFp1xuICAgKiBAcmV0dXJuIOWbnuWCs+aYr+WQpuWFgeioseioquW/mOipsumggemdolxuICAgKi9cbiAgcHVibGljIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgLy8g5qqi6KaW5piv5ZCm5YWB6Kix6Kiq5ZWP6aCB6Z2iXG4gICAgcmV0dXJuIHRoaXMuZXNzZW50aWFsS2V5c1xuICAgICAgLm1hcCgoa2V5KSA9PiByb3V0ZS5xdWVyeVBhcmFtTWFwLmtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgIC5ldmVyeSgocmVzdWx0KSA9PiByZXN1bHQgPT09IHRydWUpO1xuICB9XG59XG4iXX0=