1 | import * as i0 from '@angular/core';
|
2 | import { Injectable, NgModule } from '@angular/core';
|
3 | import * as i1 from '@angular/router';
|
4 | import { of, pipe } from 'rxjs';
|
5 | import { map, take, switchMap } from 'rxjs/operators';
|
6 | import * as i2 from '@angular/fire/auth';
|
7 | import { user } from '@angular/fire/auth';
|
8 | import { registerVersion } from 'firebase/app';
|
9 | import { VERSION } from '@angular/fire';
|
10 |
|
11 | const loggedIn = map(user => !!user);
|
12 | class 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 |
|
27 | return this.router.parseUrl(can);
|
28 | }
|
29 | }));
|
30 | };
|
31 | }
|
32 | }
|
33 | AuthGuard.ɵ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 });
|
34 | AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuard, providedIn: 'any' });
|
35 | i0.ɵɵ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 }]; } });
|
41 | const canActivate = (pipe) => ({
|
42 | canActivate: [AuthGuard], data: { authGuardPipe: pipe }
|
43 | });
|
44 | const isNotAnonymous = map(user => !!user && !user.isAnonymous);
|
45 | const idTokenResult = switchMap((user) => user ? user.getIdTokenResult() : of(null));
|
46 | const emailVerified = map(user => !!user && user.emailVerified);
|
47 | const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));
|
48 | const hasCustomClaim = (claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));
|
49 | const redirectUnauthorizedTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));
|
50 | const redirectLoggedInTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));
|
51 |
|
52 | class AuthGuardModule {
|
53 | constructor() {
|
54 | registerVersion('angularfire', VERSION.full, 'auth-guard');
|
55 | }
|
56 | }
|
57 | AuthGuardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
58 | AuthGuardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule });
|
59 | AuthGuardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AuthGuardModule, providers: [AuthGuard] });
|
60 | i0.ɵɵ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 |
|
69 |
|
70 |
|
71 | export { AuthGuard, AuthGuardModule, canActivate, customClaims, emailVerified, hasCustomClaim, idTokenResult, isNotAnonymous, loggedIn, redirectLoggedInTo, redirectUnauthorizedTo };
|
72 |
|