@@ -13,7 +13,7 @@ import {
13
13
} from '@angular/fire' ;
14
14
15
15
export type AuthPipeGenerator = ( next : ActivatedRouteSnapshot , state : RouterStateSnapshot ) => AuthPipe ;
16
- export type AuthPipe = UnaryFunction < Observable < User | null > , Observable < boolean | any [ ] > > ;
16
+ export type AuthPipe = UnaryFunction < Observable < User | null > , Observable < boolean | string | any [ ] > > ;
17
17
18
18
export const loggedIn : AuthPipe = map ( user => ! ! user ) ;
19
19
@@ -49,14 +49,16 @@ export class AngularFireAuthGuard implements CanActivate {
49
49
return this . authState . pipe (
50
50
take ( 1 ) ,
51
51
authPipeFactory ( next , state ) ,
52
- map ( can => typeof can === 'boolean' ? can : this . router . createUrlTree ( can as any [ ] ) )
52
+ map ( can => typeof can === 'boolean' ? can :
53
+ Array . isArray ( can ) ? this . router . createUrlTree ( can ) : this . router . parseUrl ( can )
54
+ )
53
55
) ;
54
56
}
55
57
56
58
}
57
59
58
60
export const canActivate = ( pipe : AuthPipeGenerator ) => ( {
59
- canActivate : [ AngularFireAuthGuard ] , data : { authGuardPipe : pipe }
61
+ canActivate : [ AngularFireAuthGuard ] , data : { authGuardPipe : pipe }
60
62
} ) ;
61
63
62
64
@@ -65,5 +67,5 @@ export const idTokenResult = switchMap((user: User|null) => user ? user.getIdTok
65
67
export const emailVerified : AuthPipe = map ( user => ! ! user && user . emailVerified ) ;
66
68
export const customClaims = pipe ( idTokenResult , map ( idTokenResult => idTokenResult ? idTokenResult . claims : [ ] ) ) ;
67
69
export const hasCustomClaim = ( claim : string ) => pipe ( customClaims , map ( claims => claims . hasOwnProperty ( claim ) ) ) ;
68
- export const redirectUnauthorizedTo = ( redirect : any [ ] ) => pipe ( loggedIn , map ( loggedIn => loggedIn || redirect ) ) ;
69
- export const redirectLoggedInTo = ( redirect : any [ ] ) => pipe ( loggedIn , map ( loggedIn => loggedIn && redirect || true ) ) ;
70
+ export const redirectUnauthorizedTo = ( redirect : string | any [ ] ) => pipe ( loggedIn , map ( loggedIn => loggedIn || redirect ) ) ;
71
+ export const redirectLoggedInTo = ( redirect : string | any [ ] ) => pipe ( loggedIn , map ( loggedIn => loggedIn && redirect || true ) ) ;
0 commit comments