UNPKG

angular2-permission

Version:

Fully featured permission based access control for your angular 2.0 applications.

40 lines (30 loc) 1.46 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; } } }