Я создаю проект, используя angular 6. В моем проекте перенаправление на основе разрешений и ролей. Я реализовал это, используя метод активации, и он работает во всех случаях, кроме одного.
Проблема заключается в том, что целевая страница также основана на разрешении, и она не работает на целевой странице, если у пользователя нет разрешения.
{ path: '', redirectTo: 'user-management', pathMatch: 'full' },
{ path: 'user-management', component: UserManagmentComponent, canActivate:[AuthGuard], data: {permisson:'im_user_view'}},
{ path: 'test-profile', component: TestProfileComponent, canActivate:[AuthGuard], data: {permisson:'ucr_test_profile_view'}},
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable < boolean | UrlTree > | Promise < boolean | UrlTree > | boolean | UrlTree {
let perm = next.data.permisson || null;
return this.getUserInfo(perm)
return true;
}
getUserInfo(perm): Observable < boolean > {
if (!perm) {
return of(false);
}
return this.commonService.getUserLoggedIn().pipe(map(result => {
if (this.PermissionService.checkPermission(perm)) {
return true
} else {
return false;
}
})
}