UNPKG

pwm-ng-permission

Version:

This Is Dynamic Angular Permission Controler Based On Roles.

47 lines (36 loc) 1.32 kB
import { Injectable } from "@angular/core"; import { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot, } from "@angular/router"; import { IPermissionGuardModel } from "../model/permission-guard.model"; import { PermissionService } from "./permission.service"; @Injectable() export class PermissionGuard implements CanActivate { constructor( private _permissionService: PermissionService, private router: Router ) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { let data = route.data["Permission"] as IPermissionGuardModel; if (Array.isArray(data.Only) && Array.isArray(data.Except)) throw "can't use both 'Only' and 'Except' in route data."; if (Array.isArray(data.Only)) { let hasDefined = this._permissionService.hasOneDefined(data.Only); if (hasDefined) return true; if (data.RedirectTo && data.RedirectTo !== undefined) this.router.navigate([data.RedirectTo]); return false; } if (Array.isArray(data.Except)) { let hasDefined = this._permissionService.hasOneDefined(data.Except); if (!hasDefined) return true; if (data.RedirectTo && data.RedirectTo !== undefined) this.router.navigate([data.RedirectTo]); return false; } return false; } }