プロジェクトで angular2 と laravel 5.3 を使用しました。ユーザーがサーバーにログインすると、laravelで、ユーザーの権限がAngularで承認を処理するために送信されます。そこで、アクセスできないユーザーからルートを保護するためのガードを作成しました。ここに私のガードクラスコードがあります:
export class AccessGuard implements CanActivate{
permissions;
currentRoute;
constructor(private authService:AuthService,private router:Router){
this.permissions = this.authService.getPermissions();
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return this.checkHavePermission(state.url);
}
private checkHavePermission(url){
switch (true) {
case url.match(/^\/panel\/users[\/.*]?/):
return this.getPermission('user.view');
case url.match(/^\/panel\/dashboard/):
return true;
case url.match(/^\/panel\/permissions/):
return this.getPermission('permissions.manager');
case url.match(/^\/panel\/candidates[\/.*]?/):
return this.getPermission('candidate.view');
}
}
getPermission(perm){
for(var i=0;i<this.permissions.length;i++){
if(this.permissions[i].name == perm ){
return true;
}
}
return false;
}
}
ルートが保護されたので、コンポーネント クラス内のユーザー権限にどのようにアクセスできるのか疑問に思っています。ユーザーがルートにアクセスできる場合がありますが、dom の特定の部分が表示されないことがあります。どうすればこのような状況に対処できますか?