7
7
} from '@angular/router' ;
8
8
import { HttpErrorResponse } from '@angular/common/http' ;
9
9
import { Observable , of } from 'rxjs' ;
10
- import { tap } from 'rxjs/operators' ;
10
+ import { filter , take , tap } from 'rxjs/operators' ;
11
11
import { AuthService , IAbpGuard } from '../abstracts' ;
12
12
import { findRoute , getRoutePath } from '../utils/route-utils' ;
13
13
import { RoutesService , PermissionService , HttpErrorReporterService } from '../services' ;
@@ -32,9 +32,13 @@ export class PermissionGuard implements IAbpGuard {
32
32
requiredPolicy = routeFound ?. requiredPolicy ;
33
33
}
34
34
35
- if ( ! requiredPolicy ) return of ( true ) ;
35
+ if ( ! requiredPolicy ) {
36
+ return of ( true ) ;
37
+ }
36
38
37
39
return this . permissionService . getGrantedPolicy$ ( requiredPolicy ) . pipe (
40
+ filter ( Boolean ) ,
41
+ take ( 1 ) ,
38
42
tap ( access => {
39
43
if ( ! access && this . authService . isAuthenticated ) {
40
44
this . httpErrorReporter . reportError ( { status : 403 } as HttpErrorResponse ) ;
@@ -61,9 +65,13 @@ export const permissionGuard: CanActivateFn = (
61
65
requiredPolicy = routeFound ?. requiredPolicy ;
62
66
}
63
67
64
- if ( ! requiredPolicy ) return of ( true ) ;
68
+ if ( ! requiredPolicy ) {
69
+ return of ( true ) ;
70
+ }
65
71
66
72
return permissionService . getGrantedPolicy$ ( requiredPolicy ) . pipe (
73
+ filter ( Boolean ) ,
74
+ take ( 1 ) ,
67
75
tap ( access => {
68
76
if ( ! access && authService . isAuthenticated ) {
69
77
httpErrorReporter . reportError ( { status : 403 } as HttpErrorResponse ) ;
0 commit comments