handleAuthProviders function

Future<void> handleAuthProviders()

Enable Email/Password and Google auth providers (T5).

Implementation

Future<void> handleAuthProviders() async {
  final SetupConfig? config = await requireFirebaseProjectConfig();
  if (config == null) return;

  final Set<AuthProvider> providers = <AuthProvider>{
    if (config.enableEmailAuth) AuthProvider.emailPassword,
    if (config.enableGoogleAuth) AuthProvider.google,
  };

  if (providers.isEmpty) {
    info('No auth providers enabled in config; nothing to do.');
    print('');
    UserPrompt.printList(<String>[
      'Edit ${p.join(config.outputDir, 'config', 'setup_config.env')} and set:',
      '  ENABLE_EMAIL_AUTH=yes',
      '  ENABLE_GOOGLE_AUTH=yes',
      'Then re-run: oracular deploy auth-providers',
    ]);
    return;
  }

  final FirebaseInitializer initializer = FirebaseInitializer(
    config.firebaseProjectId!,
  );
  final AuthProvidersResult result = await initializer.enableAuthProviders(
    providers: providers,
  );

  if (result.success) {
    success(
      'Auth providers configured: ${result.handedOff.map((AuthProvider p) => p.label).join(', ')}',
    );
  } else {
    warn(result.message);
  }
}