UNPKG

3.73 kBJavaScriptView Raw
1import * as i0 from '@angular/core';
2import { Injectable, NgModule } from '@angular/core';
3import * as i1 from '@angular/router';
4import { of, pipe } from 'rxjs';
5import { map, take, switchMap } from 'rxjs/operators';
6import * as i2 from '@angular/fire/auth';
7import { user } from '@angular/fire/auth';
8import { registerVersion } from 'firebase/app';
9import { VERSION } from '@angular/fire';
10
11const loggedIn = map(user => !!user);
12class AuthGuard {
13 constructor(router, auth) {
14 this.router = router;
15 this.auth = auth;
16 this.canActivate = (next, state) => {
17 const authPipeFactory = next.data.authGuardPipe || (() => loggedIn);
18 return user(this.auth).pipe(take(1), authPipeFactory(next, state), map(can => {
19 if (typeof can === 'boolean') {
20 return can;
21 }
22 else if (Array.isArray(can)) {
23 return this.router.createUrlTree(can);
24 }
25 else {
26 // TODO(EdricChan03): Add tests
27 return this.router.parseUrl(can);
28 }
29 }));
30 };
31 }
32}
33AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.Auth }], target: i0.ɵɵFactoryTarget.Injectable });
34AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuard, providedIn: 'any' });
35i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuard, decorators: [{
36 type: Injectable,
37 args: [{
38 providedIn: 'any'
39 }]
40 }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Auth }]; } });
41const canActivate = (pipe) => ({
42 canActivate: [AuthGuard], data: { authGuardPipe: pipe }
43});
44const isNotAnonymous = map(user => !!user && !user.isAnonymous);
45const idTokenResult = switchMap((user) => user ? user.getIdTokenResult() : of(null));
46const emailVerified = map(user => !!user && user.emailVerified);
47const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));
48const hasCustomClaim = (claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));
49const redirectUnauthorizedTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));
50const redirectLoggedInTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));
51
52class AuthGuardModule {
53 constructor() {
54 registerVersion('angularfire', VERSION.full, 'auth-guard');
55 }
56}
57AuthGuardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
58AuthGuardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule });
59AuthGuardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule, providers: [AuthGuard] });
60i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule, decorators: [{
61 type: NgModule,
62 args: [{
63 providers: [AuthGuard]
64 }]
65 }], ctorParameters: function () { return []; } });
66
67/**
68 * Generated bundle index. Do not edit.
69 */
70
71export { AuthGuard, AuthGuardModule, canActivate, customClaims, emailVerified, hasCustomClaim, idTokenResult, isNotAnonymous, loggedIn, redirectLoggedInTo, redirectUnauthorizedTo };
72//# sourceMappingURL=angular-fire-auth-guard.js.map