pwm-ng-permission
Version:
This Is Dynamic Angular Permission Controler Based On Roles.
47 lines (36 loc) • 1.32 kB
text/typescript
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";
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;
}
}