@rxap/firebase
Version:
This package provides Angular modules and services to integrate with Firebase, including App Check, Messaging, and Storage. It offers providers for configuring Firebase options and emulators, as well as an HTTP interceptor for App Check. The package also
1 lines • 8.11 kB
Source Map (JSON)
{"version":3,"file":"rxap-firebase-auth.mjs","sources":["../../../../../packages/angular/firebase/auth/src/lib/identity-platform.http-interceptor.ts","../../../../../packages/angular/firebase/auth/src/lib/identity-platform.service.ts","../../../../../packages/angular/firebase/auth/src/index.ts","../../../../../packages/angular/firebase/auth/src/rxap-firebase-auth.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport {\n inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n Auth,\n idToken,\n} from '@angular/fire/auth';\nimport { isDefined } from '@rxap/rxjs';\nimport { coerceArray } from '@rxap/utilities';\nimport { Observable } from 'rxjs';\nimport {\n catchError,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nexport const IDENTITY_PLATFORM_HTTP_INTERCEPTOR_URL_PATTERN = new InjectionToken<RegExp>(\n 'identity-platform-http-interceptor-url-pattern');\n\n\nexport const IdentityPlatformHttpInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<any>> => {\n\n const urlPattern: RegExp[] = coerceArray(\n inject(IDENTITY_PLATFORM_HTTP_INTERCEPTOR_URL_PATTERN, { optional: true }) ?? []);\n const auth = inject(Auth);\n\n const isMatch = (req: HttpRequest<any>) => {\n return urlPattern.some(pattern => req.url.match(pattern));\n };\n\n if (isMatch(req)) {\n return idToken(auth).pipe(\n tap(idTokenValue => {\n if (!idTokenValue) {\n throw new Error(\n `The isToken is not defined. Ensure that the user is logged in, before sending a request to '${ req.url }'`);\n }\n }),\n isDefined(),\n switchMap(idTokenValue => next(req.clone({\n setHeaders: {\n idToken: idTokenValue,\n },\n })).pipe(\n catchError(error => {\n if (error instanceof HttpErrorResponse) {\n if (error.status === 401) {\n auth.signOut().then(() => location.reload());\n }\n }\n throw error;\n }),\n )),\n );\n }\n return next(req);\n\n};\n\n","import {\n BehaviorSubject,\n EMPTY,\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport {\n map,\n take,\n} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport {\n Auth,\n AuthProvider,\n authState,\n confirmPasswordReset,\n FacebookAuthProvider,\n GithubAuthProvider,\n GoogleAuthProvider,\n sendPasswordResetEmail,\n signInWithEmailAndPassword,\n signInWithPopup,\n signInWithRedirect,\n signOut,\n TwitterAuthProvider,\n User,\n} from '@angular/fire/auth';\nimport { traceUntilFirst } from '@angular/fire/performance';\n\n@Injectable()\nexport class IdentityPlatformService {\n isAuthenticated$: BehaviorSubject<boolean | null> = new BehaviorSubject<boolean | null>(null);\n\n public readonly user: Observable<User | null> = EMPTY;\n\n constructor(\n public readonly auth: Auth,\n ) {\n this.user = authState(this.auth);\n this.isAuthenticated().then(isAuthenticated => this.isAuthenticated$.next(isAuthenticated));\n }\n\n public async requestPasswordReset(email: string): Promise<boolean> {\n await sendPasswordResetEmail(this.auth, email);\n return true;\n }\n\n public async sendPasswordReset(password: string, token: string): Promise<boolean> {\n await confirmPasswordReset(this.auth, token, password);\n return true;\n }\n\n public async signInWithEmailAndPassword(email: string, password: string, remember: boolean): Promise<boolean> {\n await signInWithEmailAndPassword(this.auth, email, password);\n this.isAuthenticated$.next(true);\n return true;\n }\n\n public async signOut(): Promise<boolean> {\n await signOut(this.auth);\n this.isAuthenticated$.next(false);\n return true;\n }\n\n public google(popup = true): Promise<boolean> {\n return this.withProvider(new GoogleAuthProvider(), popup);\n }\n\n public github(popup = true): Promise<boolean> {\n return this.withProvider(new GithubAuthProvider(), popup);\n }\n\n public facebook(popup = true): Promise<boolean> {\n return this.withProvider(new FacebookAuthProvider(), popup);\n }\n\n public twitter(popup = true): Promise<boolean> {\n return this.withProvider(new TwitterAuthProvider(), popup);\n }\n\n public isAuthenticated(): Promise<boolean> {\n return firstValueFrom(authState(this.auth).pipe(\n traceUntilFirst('auth'),\n take(1),\n map(Boolean),\n ));\n }\n\n protected async withProvider(provider: AuthProvider, popup = true) {\n const signIn: Promise<any> = popup ? signInWithPopup(this.auth, provider) : signInWithRedirect(this.auth, provider);\n await signIn;\n this.isAuthenticated$.next(true);\n return true;\n }\n\n}\n","// region \nexport * from './lib/identity-platform.http-interceptor';\nexport * from './lib/identity-platform.service';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAkBa,8CAA8C,GAAG,IAAI,cAAc,CAC9E,gDAAgD;MAGrC,+BAA+B,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAgC;AAE/I,IAAA,MAAM,UAAU,GAAa,WAAW,CACtC,MAAM,CAAC,8CAA8C,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AACnF,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAEzB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAqB,KAAI;AACxC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3D,KAAC;AAED,IAAA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QAChB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACvB,GAAG,CAAC,YAAY,IAAG;YACjB,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,IAAI,KAAK,CACb,CAAA,4FAAA,EAAgG,GAAG,CAAC,GAAI,CAAG,CAAA,CAAA,CAAC;;AAElH,SAAC,CAAC,EACF,SAAS,EAAE,EACX,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,YAAY;AACtB,aAAA;SACF,CAAC,CAAC,CAAC,IAAI,CACN,UAAU,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACtC,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AACxB,oBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;;;AAGhD,YAAA,MAAM,KAAK;AACb,SAAC,CAAC,CACH,CAAC,CACH;;AAEH,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAElB;;MC7Ba,uBAAuB,CAAA;AAKlC,IAAA,WAAA,CACkB,IAAU,EAAA;QAAV,IAAI,CAAA,IAAA,GAAJ,IAAI;AALtB,QAAA,IAAA,CAAA,gBAAgB,GAAoC,IAAI,eAAe,CAAiB,IAAI,CAAC;QAE7E,IAAI,CAAA,IAAA,GAA4B,KAAK;QAKnD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;IAGtF,MAAM,oBAAoB,CAAC,KAAa,EAAA;QAC7C,MAAM,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9C,QAAA,OAAO,IAAI;;AAGN,IAAA,MAAM,iBAAiB,CAAC,QAAgB,EAAE,KAAa,EAAA;QAC5D,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AACtD,QAAA,OAAO,IAAI;;AAGN,IAAA,MAAM,0BAA0B,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAiB,EAAA;QACxF,MAAM,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC5D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,OAAO,IAAI;;AAGN,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,OAAO,IAAI;;IAGN,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,kBAAkB,EAAE,EAAE,KAAK,CAAC;;IAGpD,MAAM,CAAC,KAAK,GAAG,IAAI,EAAA;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,kBAAkB,EAAE,EAAE,KAAK,CAAC;;IAGpD,QAAQ,CAAC,KAAK,GAAG,IAAI,EAAA;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,oBAAoB,EAAE,EAAE,KAAK,CAAC;;IAGtD,OAAO,CAAC,KAAK,GAAG,IAAI,EAAA;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,mBAAmB,EAAE,EAAE,KAAK,CAAC;;IAGrD,eAAe,GAAA;QACpB,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7C,eAAe,CAAC,MAAM,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,OAAO,CAAC,CACb,CAAC;;AAGM,IAAA,MAAM,YAAY,CAAC,QAAsB,EAAE,KAAK,GAAG,IAAI,EAAA;QAC/D,MAAM,MAAM,GAAiB,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACnH,QAAA,MAAM,MAAM;AACZ,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,QAAA,OAAO,IAAI;;8GA9DF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;AC7BD;AAGA;;ACHA;;AAEG;;;;"}