UNPKG

4.52 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-fire-auth-guard.js","sources":["../../../src/auth-guard/auth-guard.ts","../../../src/auth-guard/auth-guard.module.ts","../../../src/auth-guard/angular-fire-auth-guard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { Observable, of, pipe, UnaryFunction } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport firebase from 'firebase/app';\nimport { AngularFireAuth } from '@angular/fire/auth';\n\nexport type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;\nexport type AuthPipe = UnaryFunction<Observable<firebase.User|null>, Observable<boolean|string|any[]>>;\n\nexport const loggedIn: AuthPipe = map(user => !!user);\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAuthGuard implements CanActivate {\n\n constructor(private router: Router, private auth: AngularFireAuth) {}\n\n canActivate = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authPipeFactory = next.data.authGuardPipe as AuthPipeGenerator || (() => loggedIn);\n return this.auth.user.pipe(\n take(1),\n authPipeFactory(next, state),\n map(can => {\n if (typeof can === 'boolean') {\n return can;\n } else if (Array.isArray(can)) {\n return this.router.createUrlTree(can);\n } else {\n // TODO(EdricChan03): Add tests\n return this.router.parseUrl(can);\n }\n })\n );\n }\n\n}\n\nexport const canActivate = (pipe: AuthPipeGenerator) => ({\n canActivate: [ AngularFireAuthGuard ], data: { authGuardPipe: pipe }\n});\n\n\nexport const isNotAnonymous: AuthPipe = map(user => !!user && !user.isAnonymous);\nexport const idTokenResult = switchMap((user: firebase.User|null) => user ? user.getIdTokenResult() : of(null));\nexport const emailVerified: AuthPipe = map(user => !!user && user.emailVerified);\nexport const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));\nexport const hasCustomClaim: (claim: string) => AuthPipe =\n (claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));\nexport const redirectUnauthorizedTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));\nexport const redirectLoggedInTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));\n","import { NgModule } from '@angular/core';\nimport { AngularFireAuthGuard } from './auth-guard';\n\n@NgModule({\n providers: [ AngularFireAuthGuard ]\n})\nexport class AngularFireAuthGuardModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;WAUsC,IAAI,IAAI,CAAC,CAAC;MAAnC,QAAQ,GAAa,GAAG,KAAiB;MAKzC,oBAAoB;IAE/B,YAAoB,MAAc,EAAU,IAAqB;QAA7C,WAAM,GAAN,MAAM,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAiB;QAEjE,gBAAW,GAAG,CAAC,IAA4B,EAAE,KAA0B;YACrE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAkC,KAAK,MAAM,QAAQ,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACxB,IAAI,CAAC,CAAC,CAAC,EACP,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAC5B,GAAG,CAAC,GAAG;gBACL,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;oBAC5B,OAAO,GAAG,CAAC;iBACZ;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;iBACvC;qBAAM;;oBAEL,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;iBAClC;aACF,CAAC,CACH,CAAC;SACH,CAAA;KAlBoE;;;;YALtE,UAAU,SAAC;gBACV,UAAU,EAAE,KAAK;aAClB;;;;YAb6C,MAAM;YAI3C,eAAe;;MAkCX,WAAW,GAAG,CAAC,IAAuB,MAAM;IACvD,WAAW,EAAE,CAAE,oBAAoB,CAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;CACrE,EAAE;WAGyC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;MAAvD,cAAc,GAAa,GAAG,KAAsC;WAC1C,CAAC,IAAwB,KAAK,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;MAAhG,aAAa,GAAG,SAAS,KAA0E;WACrE,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;MAArD,aAAa,GAAa,GAAG,KAAuC;WAC7B,aAAa,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG;MAA/F,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAA4D,EAAE;MACpG,cAAc,GACzB,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,IAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;MACjE,sBAAsB,GACjC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE;MACzD,kBAAkB,GAC7B,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC;;MC/C/D,0BAA0B;;;YAHtC,QAAQ,SAAC;gBACR,SAAS,EAAE,CAAE,oBAAoB,CAAE;aACpC;;;ACLD;;;;;;"}
\No newline at end of file