UNPKG

portal-route-guard

Version:
116 lines (86 loc) 2.86 kB
# Wistron I40 Portal Guard # Install ``` npm i portal-route-guard --save ``` # Table of Contents - [Feature](#feature) - [Usage](#usage) - [Additional](#additional) # Feature - Portal 路由守衛模組 - 檢查系統是否是透過 Portal 訪問 # Usage ## Initial Module 初始化 Portal 路由守衛模組,`forRoot` 在有需要提供拒絕存取的頁面時添加即可 app.module.ts ```typescript import { PortalGuardModule } from 'portal-route-guard'; ... @NgModule({ imports: [ BrowserModule, AppRoutingModule, PortalGuardModule.forRoot({ rejectPath: '/rejection' }), ], ... }) export class AppModule {} ``` ## Setup Route 設定路由,將頁面的路由透過 `canActivate` 確保該頁面需先從 Portal 進入後才可訪問 app-routing.module.ts ```typescript import { PortalGuard } from 'portal-route-guard'; ... const routes: Routes = [ // 需透過 Portal 進入後才可訪問的頁面,非 Lazy Load 同樣適用 { path: 'your_path', loadChildren: () => import('your_target').then((m) => m.PageModule), canActivate: [PortalGuard], }, // 提供拒絕存取的頁面 { path: 'your_reject_path', loadChildren: () => import('your_rejection').then((m) => m.RejectionModule), }, ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], }) export class AppRoutingModule {} ``` > 完成 `Initial Module``Setup Route` 即可使用 # Additional ## Use Service 若需要單獨在其他的 Schematic 中驗證,可透過 `PortalAccessmentService` 進行判斷 app.component.ts ```typescript import { Component, OnInit } from "@angular/core"; import { ActivatedRoute } from "@angular/router"; import { map } from "rxjs"; import { PortalAccessmentService } from "portal-route-guard"; @Component({ selector: "app-root", templateUrl: "./app.component.html", styleUrls: ["./app.component.less"], }) export class AppComponent implements OnInit { constructor( private readonly route: ActivatedRoute, private readonly service: PortalAccessmentService ) {} public ngOnInit(): void { this.route.queryParams .pipe(map(() => this.service.canActivate(this.route.snapshot))) .subscribe((accessed) => console.log(accessed)); } } ``` ## Portal Guard Option Portal 路由守衛模組配置 | Parameter | Type | Required | Default | Description | | :------------ | :------: | :------: | :-------------------------------------------: | :--------------------------------- | | essentialKeys | string[] | Optional | ['userID', 'token', 'sysId', 'site', 'plant'] | 透過 Portal 訪問必要的參數 | | rejectPath | string | Optional | undefined | 拒絕訪問頁面後要重新路由的頁面路徑 |