Skip to content

Commit 552119c

Browse files
authored
feat(auth): add support for custom domains on mobile (#11925)
* feat(auth): add support for custom domains on mobile * feat(auth): add support for custom domains on mobile
1 parent 4e6a071 commit 552119c

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

packages/firebase_auth/firebase_auth/android/src/main/java/io/flutter/plugins/firebase/auth/FlutterFirebaseAuthPlugin.java

+6
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.flutter.plugin.common.EventChannel;
3030
import io.flutter.plugin.common.EventChannel.StreamHandler;
3131
import io.flutter.plugin.common.MethodChannel;
32+
import io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin;
3233
import io.flutter.plugins.firebase.core.FlutterFirebasePlugin;
3334
import java.util.HashMap;
3435
import java.util.List;
@@ -134,6 +135,11 @@ static FirebaseAuth getAuthFromPigeon(
134135
if (pigeonApp.getTenantId() != null) {
135136
auth.setTenantId(pigeonApp.getTenantId());
136137
}
138+
String customDomain = FlutterFirebaseCorePlugin.customAuthDomain.get(pigeonApp.getAppName());
139+
if (customDomain != null) {
140+
auth.setCustomAuthDomain(customDomain);
141+
}
142+
137143
return auth;
138144
}
139145

packages/firebase_auth/firebase_auth/ios/Classes/FLTFirebaseAuthPlugin.m

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#import "Public/FLTFirebaseAuthPlugin.h"
1616
@import CommonCrypto;
1717
#import <AuthenticationServices/AuthenticationServices.h>
18+
#import <firebase_core/FLTFirebaseCorePlugin.h>
1819

1920
NSString *const kFLTFirebaseAuthChannelName = @"plugins.flutter.io/firebase_auth";
2021

@@ -632,6 +633,7 @@ - (FIRAuth *_Nullable)getFIRAuthFromAppNameFromPigeon:(AuthPigeonFirebaseApp *)p
632633
FIRAuth *auth = [FIRAuth authWithApp:app];
633634

634635
auth.tenantID = pigeonApp.tenantId;
636+
auth.customAuthDomain = [FLTFirebaseCorePlugin getCustomDomain:app.name];
635637

636638
return auth;
637639
}

packages/firebase_core/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseCorePlugin.java

+9
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import com.google.firebase.FirebaseOptions;
1616
import io.flutter.embedding.engine.plugins.FlutterPlugin;
1717
import java.util.ArrayList;
18+
import java.util.HashMap;
1819
import java.util.List;
20+
import java.util.Map;
1921

2022
/**
2123
* Flutter plugin implementation controlling the entrypoint for the Firebase SDK.
@@ -29,6 +31,8 @@ public class FlutterFirebaseCorePlugin
2931
private Context applicationContext;
3032
private boolean coreInitialized = false;
3133

34+
public static Map<String, String> customAuthDomain = new HashMap<>();
35+
3236
@Override
3337
public void onAttachedToEngine(FlutterPluginBinding binding) {
3438
GeneratedAndroidFirebaseCore.FirebaseCoreHostApi.setup(binding.getBinaryMessenger(), this);
@@ -138,6 +142,11 @@ public void initializeApp(
138142
} catch (Exception e) {
139143
// do nothing
140144
}
145+
146+
if (initializeAppRequest.getAuthDomain() != null) {
147+
customAuthDomain.put(appName, initializeAppRequest.getAuthDomain());
148+
}
149+
141150
FirebaseApp firebaseApp =
142151
FirebaseApp.initializeApp(applicationContext, options, appName);
143152
taskCompletionSource.setResult(Tasks.await(firebaseAppToMap(firebaseApp)));

packages/firebase_core/firebase_core/ios/Classes/FLTFirebaseCorePlugin.h

+3
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,7 @@
1414

1515
@interface FLTFirebaseCorePlugin
1616
: FLTFirebasePlugin <FlutterPlugin, FLTFirebasePlugin, FirebaseCoreHostApi, FirebaseAppHostApi>
17+
18+
+ (NSString *)getCustomDomain:(NSString *)appName;
19+
1720
@end

packages/firebase_core/firebase_core/ios/Classes/FLTFirebaseCorePlugin.m

+10
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ + (instancetype)sharedInstance {
5151
return instance;
5252
}
5353

54+
static NSMutableDictionary<NSString *, NSString *> *customAuthDomains;
55+
56+
+ (NSString *)getCustomDomain:(NSString *)appName {
57+
return customAuthDomains[appName];
58+
}
59+
5460
#pragma mark - Helpers
5561

5662
- (PigeonFirebaseOptions *)optionsFromFIROptions:(FIROptions *)options {
@@ -155,6 +161,10 @@ - (void)initializeAppAppName:(nonnull NSString *)appName
155161
options.appGroupID = initializeAppRequest.appGroupId;
156162
}
157163

164+
if (initializeAppRequest.authDomain != nil) {
165+
customAuthDomains[appNameIos] = initializeAppRequest.authDomain;
166+
}
167+
158168
[FIRApp configureWithName:appNameIos options:options];
159169

160170
completion([self initializeResponseFromFIRApp:[FIRApp appNamed:appNameIos]], nil);

0 commit comments

Comments
 (0)