ensureFirebaseAuth method

void ensureFirebaseAuth({
  1. required Iterable<FirebaseAuthProvider> providers,
  2. required Object homePage,
  3. required Object signInPage,
  4. bool autoCreateUserDocument = false,
  5. String? userCollectionName,
})

Declares app-level Firebase auth behavior idempotently.

Unlike firebaseAuth, this does not throw if Firebase auth is already configured. If the target project already has Firebase auth configured, compilation silently skips the reconfiguration.

app.ensureFirebaseAuth(
  providers: [FirebaseAuthProvider.email],
  homePage: 'HomePage',
  signInPage: 'SignInPage',
);

Implementation

void ensureFirebaseAuth({
  required Iterable<FirebaseAuthProvider> providers,
  required Object homePage,
  required Object signInPage,
  bool autoCreateUserDocument = false,
  String? userCollectionName,
}) {
  _ensureFirebaseAuthFlag.add('set');
  if (_firebaseAuth != null) {
    return; // Already configured in this DSL app — no-op.
  }
  if (_supabaseAuth != null) {
    throw StateError(
      'ensureFirebaseAuth: Supabase auth is already configured in this DSL app. '
      'Firebase and Supabase auth are mutually exclusive.',
    );
  }
  _firebaseAuth = FirebaseAuthDeclaration(
    providers: providers,
    homePageName: _resolvePageReference(homePage, 'homePage'),
    signInPageName: _resolvePageReference(signInPage, 'signInPage'),
    autoCreateUserDocument: autoCreateUserDocument,
    userCollectionName: userCollectionName,
  );
}