@@ -13,7 +13,7 @@ import {
1313} from '@angular/fire' ;
1414
1515export 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 [ ] > > ;
1717
1818export const loggedIn : AuthPipe = map ( user => ! ! user ) ;
1919
@@ -49,14 +49,16 @@ export class AngularFireAuthGuard implements CanActivate {
4949 return this . authState . pipe (
5050 take ( 1 ) ,
5151 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+ )
5355 ) ;
5456 }
5557
5658}
5759
5860export const canActivate = ( pipe : AuthPipeGenerator ) => ( {
59- canActivate : [ AngularFireAuthGuard ] , data : { authGuardPipe : pipe }
61+ canActivate : [ AngularFireAuthGuard ] , data : { authGuardPipe : pipe }
6062} ) ;
6163
6264
@@ -65,5 +67,5 @@ export const idTokenResult = switchMap((user: User|null) => user ? user.getIdTok
6567export const emailVerified : AuthPipe = map ( user => ! ! user && user . emailVerified ) ;
6668export const customClaims = pipe ( idTokenResult , map ( idTokenResult => idTokenResult ? idTokenResult . claims : [ ] ) ) ;
6769export 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