{"version":3,"file":"ngx-firebase-auth.mjs","sources":["../../../projects/ngx-firebase-auth/src/lib/ngx-firebase-auth.service.ts","../../../projects/ngx-firebase-auth/src/lib/ngx-firebase-auth.module.ts","../../../projects/ngx-firebase-auth/src/public-api.ts","../../../projects/ngx-firebase-auth/src/ngx-firebase-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport firebase from 'firebase/compat/app';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { AuthContext } from './models/authContext';\nimport User = firebase.User;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxFirebaseAuthService {\n\n  /**\n   * Get the current User Observable from AngularFireAuth\n   * @return Observable<FirebaseUser> if the user is authenticated.\n   */\n  public get currentUser$(): Observable<User | null> {\n    return this.afAuth.authState.pipe(shareReplay());\n  }\n\n  /**\n   * Gets the current user.\n   * @return The user or null if the user is not authenticated.\n   */\n  public get currentUser(): firebase.User | null {\n    return this.authState;\n  }\n\n  /**\n   * Gets the current user id.\n   * @return The user id or null if the user is not authenticated.\n   */\n  public get currentUserId(): string {\n    return this.currentUser ? this.currentUser.uid : '';\n  }\n\n  /**\n   * Checks is the user is authenticated.\n   * @return True if the user is authenticated.\n   */\n  public get authenticated(): boolean {\n    return this.authState != null;\n  }\n\n  /**\n   * Checks if the user email is verified.\n   * @return True if the user is authorized.\n   */\n  public get isVerified(): boolean | null {\n    return this.currentUser && this.currentUser.emailVerified;\n  }\n\n  private authState: firebase.User | null;\n\n  constructor(private afAuth: AngularFireAuth) {\n    this.authState = null;\n    this.afAuth.authState.subscribe((authState: firebase.User | null) => {\n      this.authState = authState;\n    });\n  }\n\n  /**\n   * Register the user.\n   * @param context The register parameters.\n   * @return The user credentials.\n   */\n  public register(context: AuthContext): Promise<firebase.auth.UserCredential> {\n    return this.afAuth.createUserWithEmailAndPassword(context.email, context.password);\n  }\n\n  /**\n   * Login the user.\n   * @param context The login parameters.\n   * @return The user credentials.\n   */\n  public login(context: AuthContext): Promise<firebase.auth.UserCredential> {\n    return this.afAuth.signInWithEmailAndPassword(context.email, context.password);\n  }\n\n  /**\n   * Logs out the user and clear credentials.\n   * @return void\n   */\n  public logout(): Promise<void> {\n    // Customize credentials invalidation here\n    return this.afAuth.signOut();\n  }\n\n  /**\n   * Sends Email Verification e.g. after registration.\n   * @return void\n   */\n  public sendEmailVerification(): Promise<void> {\n    const currentUser: firebase.User | null = firebase.auth().currentUser;\n    if (currentUser) {\n      return currentUser.sendEmailVerification();\n    }\n\n    return new Promise(async (_, reject) => reject('Could not call sendEmailVerification - No User available!'));\n  }\n\n  /**\n   * Sends reset password mail\n   * @return void\n   */\n  public sendPasswordResetEmail(email: string): Promise<void> {\n    return this.afAuth.sendPasswordResetEmail(email);\n  }\n\n  /**\n   * Reauthenticate an user, e.g. when updating user email\n   * @return return new firebase user\n   */\n  public reauthenticateUser(password: string): Promise<firebase.User> {\n    const firebaseUser: firebase.User | null = this.currentUser;\n    if (firebaseUser?.email != null) {\n      const credentials = firebase.auth.EmailAuthProvider.credential(firebaseUser.email, password);\n      return new Promise((resolve, reject) => {\n        firebaseUser.reauthenticateWithCredential(credentials).then(() => {\n          resolve(firebaseUser);\n        }).catch((err) => {\n          console.log(err);\n          reject('Verification failed');\n        });\n      });\n    }\n\n    return new Promise((_, reject) => reject('Could not call reauthenticateUser - No User available!'));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { NgxFirebaseAuthService } from './ngx-firebase-auth.service';\n\n\n@NgModule({\n  providers: [\n    NgxFirebaseAuthService,\n  ],\n})\nexport class NgxFirebaseAuthModule {\n}\n","/*\n * Public API Surface of ngx-firebase-auth\n */\n\nexport * from './lib/ngx-firebase-auth.service';\nexport * from './lib/ngx-firebase-auth.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}