1616
1717import { UserRecord , CreateRequest , UpdateRequest } from './user-record' ;
1818import { FirebaseApp } from '../firebase-app' ;
19- import { FirebaseTokenGenerator , CryptoSigner , cryptoSignerFromApp } from './token-generator' ;
19+ import { FirebaseTokenGenerator , cryptoSignerFromApp } from './token-generator' ;
2020import {
2121 AbstractAuthRequestHandler , AuthRequestHandler , TenantAwareAuthRequestHandler ,
2222} from './auth-api-request' ;
@@ -90,6 +90,7 @@ export interface SessionCookieOptions {
9090 * Base Auth class. Mainly used for user management APIs.
9191 */
9292export class BaseAuth < T extends AbstractAuthRequestHandler > {
93+
9394 protected readonly tokenGenerator : FirebaseTokenGenerator ;
9495 protected readonly idTokenVerifier : FirebaseTokenVerifier ;
9596 protected readonly sessionCookieVerifier : FirebaseTokenVerifier ;
@@ -104,12 +105,14 @@ export class BaseAuth<T extends AbstractAuthRequestHandler> {
104105 * minting.
105106 * @constructor
106107 */
107- constructor ( protected readonly projectId : string ,
108- protected readonly authRequestHandler : T ,
109- cryptoSigner : CryptoSigner ) {
108+ constructor ( app : FirebaseApp , protected readonly authRequestHandler : T ) {
109+ const cryptoSigner = cryptoSignerFromApp ( app ) ;
110110 this . tokenGenerator = new FirebaseTokenGenerator ( cryptoSigner ) ;
111- this . sessionCookieVerifier = createSessionCookieVerifier ( projectId ) ;
112- this . idTokenVerifier = createIdTokenVerifier ( projectId ) ;
111+
112+ const projectId = utils . getProjectId ( app ) ;
113+ const httpAgent = app . options . httpAgent ;
114+ this . sessionCookieVerifier = createSessionCookieVerifier ( projectId , httpAgent ) ;
115+ this . idTokenVerifier = createIdTokenVerifier ( projectId , httpAgent ) ;
113116 }
114117
115118 /**
@@ -617,10 +620,7 @@ export class TenantAwareAuth extends BaseAuth<TenantAwareAuthRequestHandler> {
617620 * @constructor
618621 */
619622 constructor ( app : FirebaseApp , tenantId : string ) {
620- super (
621- utils . getProjectId ( app ) ,
622- new TenantAwareAuthRequestHandler ( app , tenantId ) ,
623- cryptoSignerFromApp ( app ) ) ;
623+ super ( app , new TenantAwareAuthRequestHandler ( app , tenantId ) ) ;
624624 utils . addReadonlyGetter ( this , 'tenantId' , tenantId ) ;
625625 }
626626
@@ -721,35 +721,17 @@ export class TenantAwareAuth extends BaseAuth<TenantAwareAuthRequestHandler> {
721721 * An Auth instance can have multiple tenants.
722722 */
723723export class Auth extends BaseAuth < AuthRequestHandler > implements FirebaseServiceInterface {
724+
724725 public INTERNAL : AuthInternals = new AuthInternals ( ) ;
725726 private readonly tenantManager_ : TenantManager ;
726727 private readonly app_ : FirebaseApp ;
727728
728- /**
729- * Returns the FirebaseApp's project ID.
730- *
731- * @param {FirebaseApp } app The project ID for an app.
732- * @return {string } The FirebaseApp's project ID.
733- */
734- private static getProjectId ( app : FirebaseApp ) : string {
735- if ( typeof app !== 'object' || app === null || ! ( 'options' in app ) ) {
736- throw new FirebaseAuthError (
737- AuthClientErrorCode . INVALID_ARGUMENT ,
738- 'First argument passed to admin.auth() must be a valid Firebase app instance.' ,
739- ) ;
740- }
741- return utils . getProjectId ( app ) ;
742- }
743-
744729 /**
745730 * @param {object } app The app for this Auth service.
746731 * @constructor
747732 */
748733 constructor ( app : FirebaseApp ) {
749- super (
750- Auth . getProjectId ( app ) ,
751- new AuthRequestHandler ( app ) ,
752- cryptoSignerFromApp ( app ) ) ;
734+ super ( app , new AuthRequestHandler ( app ) ) ;
753735 this . app_ = app ;
754736 this . tenantManager_ = new TenantManager ( app ) ;
755737 }
0 commit comments