@react-native-firebase/auth 25.1.0 → 26.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/RNFBAuth.podspec +16 -7
- package/android/build.gradle +23 -0
- package/android/src/main/java/io/invertase/firebase/auth/{ReactNativeFirebaseAuthModule.java → NativeRNFBTurboAuth.java} +131 -103
- package/android/src/main/java/io/invertase/firebase/auth/ReactNativeFirebaseAuthPackage.java +1 -1
- package/android/src/main/java/io/invertase/firebase/auth/ReactNativeFirebaseAuthSyncException.java +35 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboAuthSpec.java +308 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/jni/CMakeLists.txt +36 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/jni/RNFBAuthTurboModules-generated.cpp +392 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/jni/RNFBAuthTurboModules.h +31 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/jni/react/renderer/components/RNFBAuthTurboModules/RNFBAuthTurboModulesJSI-generated.cpp +539 -0
- package/android/src/main/java/io/invertase/firebase/auth/generated/jni/react/renderer/components/RNFBAuthTurboModules/RNFBAuthTurboModulesJSI.h +611 -0
- package/app.plugin.js +1 -1
- package/dist/module/ConfirmationResult.js.map +1 -1
- package/dist/module/MultiFactorResolver.js.map +1 -1
- package/dist/module/PhoneAuthListener.js +3 -4
- package/dist/module/PhoneAuthListener.js.map +1 -1
- package/dist/module/TotpMultiFactorGenerator.js +1 -1
- package/dist/module/TotpMultiFactorGenerator.js.map +1 -1
- package/dist/module/TotpSecret.js +15 -9
- package/dist/module/TotpSecret.js.map +1 -1
- package/dist/module/User.js +1 -1
- package/dist/module/User.js.map +1 -1
- package/dist/module/credentials/OAuthCredential.js +22 -1
- package/dist/module/credentials/OAuthCredential.js.map +1 -1
- package/dist/module/getMultiFactorResolver.js +2 -2
- package/dist/module/getMultiFactorResolver.js.map +1 -1
- package/dist/module/index.js +1226 -6
- package/dist/module/index.js.map +1 -1
- package/dist/module/internal/syncNativeError.js +75 -0
- package/dist/module/internal/syncNativeError.js.map +1 -0
- package/dist/module/multiFactor.js +5 -3
- package/dist/module/multiFactor.js.map +1 -1
- package/dist/module/providers/AppleAuthProvider.js +17 -4
- package/dist/module/providers/AppleAuthProvider.js.map +1 -1
- package/dist/module/providers/OAuthProvider.js +4 -2
- package/dist/module/providers/OAuthProvider.js.map +1 -1
- package/dist/module/providers/PhoneAuthProvider.js +4 -4
- package/dist/module/providers/PhoneAuthProvider.js.map +1 -1
- package/dist/module/types/auth.js +8 -0
- package/dist/module/types/auth.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/web/RNFBAuthModule.js +26 -18
- package/dist/module/web/RNFBAuthModule.js.map +1 -1
- package/dist/typescript/lib/ConfirmationResult.d.ts +2 -2
- package/dist/typescript/lib/ConfirmationResult.d.ts.map +1 -1
- package/dist/typescript/lib/MultiFactorResolver.d.ts +6 -6
- package/dist/typescript/lib/MultiFactorResolver.d.ts.map +1 -1
- package/dist/typescript/lib/PhoneAuthListener.d.ts +1 -4
- package/dist/typescript/lib/PhoneAuthListener.d.ts.map +1 -1
- package/dist/typescript/lib/TotpSecret.d.ts +2 -4
- package/dist/typescript/lib/TotpSecret.d.ts.map +1 -1
- package/dist/typescript/lib/User.d.ts +13 -13
- package/dist/typescript/lib/User.d.ts.map +1 -1
- package/dist/typescript/lib/credentials/OAuthCredential.d.ts +6 -0
- package/dist/typescript/lib/credentials/OAuthCredential.d.ts.map +1 -1
- package/dist/typescript/lib/getMultiFactorResolver.d.ts +5 -5
- package/dist/typescript/lib/getMultiFactorResolver.d.ts.map +1 -1
- package/dist/typescript/lib/index.d.ts +377 -4
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/internal/syncNativeError.d.ts +6 -0
- package/dist/typescript/lib/internal/syncNativeError.d.ts.map +1 -0
- package/dist/typescript/lib/multiFactor.d.ts +9 -9
- package/dist/typescript/lib/multiFactor.d.ts.map +1 -1
- package/dist/typescript/lib/providers/AppleAuthProvider.d.ts +10 -3
- package/dist/typescript/lib/providers/AppleAuthProvider.d.ts.map +1 -1
- package/dist/typescript/lib/providers/OAuthProvider.d.ts.map +1 -1
- package/dist/typescript/lib/providers/PhoneAuthProvider.d.ts.map +1 -1
- package/dist/typescript/lib/types/auth.d.ts +39 -0
- package/dist/typescript/lib/types/auth.d.ts.map +1 -1
- package/dist/typescript/lib/types/internal.d.ts +45 -48
- package/dist/typescript/lib/types/internal.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/dist/typescript/lib/web/RNFBAuthModule.d.ts +7 -5
- package/dist/typescript/lib/web/RNFBAuthModule.d.ts.map +1 -1
- package/ios/RNFBAuth/RNFBAuthHelper.h +338 -0
- package/ios/RNFBAuth/{RNFBAuthModule.m → RNFBAuthHelper.m} +605 -323
- package/ios/RNFBAuth/RNFBAuthModule.h +9 -66
- package/ios/RNFBAuth/RNFBAuthModule.mm +592 -0
- package/ios/RNFBAuth.xcodeproj/project.pbxproj +8 -8
- package/ios/generated/RCTAppDependencyProvider.h +25 -0
- package/ios/generated/RCTAppDependencyProvider.mm +55 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
- package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
- package/ios/generated/RNFBAuthTurboModules/RNFBAuthTurboModules-generated.mm +459 -0
- package/ios/generated/RNFBAuthTurboModules/RNFBAuthTurboModules.h +342 -0
- package/ios/generated/RNFBAuthTurboModulesJSI-generated.cpp +539 -0
- package/ios/generated/RNFBAuthTurboModulesJSI.h +611 -0
- package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
- package/lib/ConfirmationResult.ts +3 -6
- package/lib/MultiFactorResolver.ts +8 -8
- package/lib/PhoneAuthListener.ts +6 -10
- package/lib/TotpMultiFactorGenerator.ts +1 -1
- package/lib/TotpSecret.ts +22 -9
- package/lib/User.ts +27 -38
- package/lib/credentials/OAuthCredential.ts +44 -0
- package/lib/getMultiFactorResolver.ts +9 -11
- package/lib/index.ts +1848 -6
- package/lib/internal/syncNativeError.ts +89 -0
- package/lib/multiFactor.ts +25 -16
- package/lib/providers/AppleAuthProvider.ts +21 -5
- package/lib/providers/OAuthProvider.ts +2 -0
- package/lib/providers/PhoneAuthProvider.ts +9 -22
- package/lib/types/auth.ts +42 -0
- package/lib/types/internal.ts +56 -63
- package/lib/version.ts +1 -1
- package/lib/web/RNFBAuthModule.ts +47 -33
- package/package.json +30 -5
- package/plugin/build/app.plugin.d.ts +2 -0
- package/plugin/build/app.plugin.js +6 -0
- package/plugin/src/app.plugin.ts +3 -0
- package/plugin/tsconfig.tsbuildinfo +1 -1
- package/react-native.config.js +9 -0
- package/specs/NativeRNFBTurboAuth.ts +145 -0
- package/typedoc.json +0 -1
- package/dist/module/modular.js +0 -793
- package/dist/module/modular.js.map +0 -1
- package/dist/module/namespaced.js +0 -522
- package/dist/module/namespaced.js.map +0 -1
- package/dist/module/types/namespaced.js +0 -62
- package/dist/module/types/namespaced.js.map +0 -1
- package/dist/typescript/lib/modular.d.ts +0 -370
- package/dist/typescript/lib/modular.d.ts.map +0 -1
- package/dist/typescript/lib/namespaced.d.ts +0 -12
- package/dist/typescript/lib/namespaced.d.ts.map +0 -1
- package/dist/typescript/lib/types/namespaced.d.ts +0 -2185
- package/dist/typescript/lib/types/namespaced.d.ts.map +0 -1
- package/lib/modular.ts +0 -1166
- package/lib/namespaced.ts +0 -849
- package/lib/types/namespaced.ts +0 -2350
|
@@ -15,13 +15,34 @@
|
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
#if __has_include(<Firebase/Firebase.h>)
|
|
18
19
|
#import <Firebase/Firebase.h>
|
|
20
|
+
#else
|
|
21
|
+
@import FirebaseCore;
|
|
22
|
+
@import FirebaseAuth;
|
|
23
|
+
// `@import FirebaseAuth` alone only exposes the Swift-generated interop header
|
|
24
|
+
// (the real `FIRAuth`/`FIRUser` classes). The hand-written ObjC compatibility
|
|
25
|
+
// headers under `Public/FirebaseAuth/` (typedefs like
|
|
26
|
+
// `FIRAuthStateDidChangeListenerHandle`, error userInfo key constants, etc.)
|
|
27
|
+
// are vended by the separate `FirebaseAuthInternal` Clang module, which isn't
|
|
28
|
+
// automatically re-exported by `@import FirebaseAuth` -- it must be imported
|
|
29
|
+
// explicitly too, even though it's a direct (not transitive) SPM dependency of
|
|
30
|
+
// `FirebaseAuth`. See okf-bundle/ios-spm-native-imports.md.
|
|
31
|
+
@import FirebaseAuthInternal;
|
|
32
|
+
#endif
|
|
33
|
+
#import <React/RCTConvert.h>
|
|
19
34
|
#import <React/RCTUtils.h>
|
|
20
35
|
|
|
21
36
|
#import "RNFBApp/RCTConvert+FIRApp.h"
|
|
22
37
|
#import "RNFBApp/RNFBAppModule.h"
|
|
23
38
|
#import "RNFBApp/RNFBSharedUtils.h"
|
|
24
|
-
#import "
|
|
39
|
+
#import "RNFBAuthHelper.h"
|
|
40
|
+
|
|
41
|
+
static void RNFBAuthThrowSyncErrorWithCode(NSString *code, NSString *message) {
|
|
42
|
+
@throw [NSException exceptionWithName:code
|
|
43
|
+
reason:message
|
|
44
|
+
userInfo:@{@"code" : code, @"message" : message}];
|
|
45
|
+
}
|
|
25
46
|
|
|
26
47
|
static NSString *const keyIOS = @"iOS";
|
|
27
48
|
static NSString *const keyUrl = @"url";
|
|
@@ -50,6 +71,68 @@ static NSString *const AUTH_STATE_CHANGED_EVENT = @"auth_state_changed";
|
|
|
50
71
|
static NSString *const AUTH_ID_TOKEN_CHANGED_EVENT = @"auth_id_token_changed";
|
|
51
72
|
static NSString *const PHONE_AUTH_STATE_CHANGED_EVENT = @"phone_auth_state_changed";
|
|
52
73
|
|
|
74
|
+
static NSString *const AuthErrorCode_toJSErrorCode[] = {
|
|
75
|
+
[FIRAuthErrorCodeInvalidCustomToken] = @"invalid-custom-token",
|
|
76
|
+
[FIRAuthErrorCodeCustomTokenMismatch] = @"custom-token-mismatch",
|
|
77
|
+
[FIRAuthErrorCodeInvalidCredential] = @"invalid-credential",
|
|
78
|
+
[FIRAuthErrorCodeUserDisabled] = @"user-disabled",
|
|
79
|
+
[FIRAuthErrorCodeOperationNotAllowed] = @"operation-not-allowed",
|
|
80
|
+
[FIRAuthErrorCodeEmailAlreadyInUse] = @"email-already-in-use",
|
|
81
|
+
[FIRAuthErrorCodeInvalidEmail] = @"invalid-email",
|
|
82
|
+
[FIRAuthErrorCodeWrongPassword] = @"wrong-password",
|
|
83
|
+
[FIRAuthErrorCodeTooManyRequests] = @"too-many-requests",
|
|
84
|
+
[FIRAuthErrorCodeUserNotFound] = @"user-not-found",
|
|
85
|
+
[FIRAuthErrorCodeAccountExistsWithDifferentCredential] =
|
|
86
|
+
@"account-exists-with-different-credential",
|
|
87
|
+
[FIRAuthErrorCodeRequiresRecentLogin] = @"requires-recent-login",
|
|
88
|
+
[FIRAuthErrorCodeProviderAlreadyLinked] = @"provider-already-linked",
|
|
89
|
+
[FIRAuthErrorCodeNoSuchProvider] = @"no-such-provider",
|
|
90
|
+
[FIRAuthErrorCodeInvalidUserToken] = @"invalid-user-token",
|
|
91
|
+
[FIRAuthErrorCodeNetworkError] = @"network-request-failed",
|
|
92
|
+
[FIRAuthErrorCodeUserTokenExpired] = @"user-token-expired",
|
|
93
|
+
[FIRAuthErrorCodeInvalidAPIKey] = @"invalid-api-key",
|
|
94
|
+
[FIRAuthErrorCodeUserMismatch] = @"user-mismatch",
|
|
95
|
+
[FIRAuthErrorCodeCredentialAlreadyInUse] = @"credential-already-in-use",
|
|
96
|
+
[FIRAuthErrorCodeWeakPassword] = @"weak-password",
|
|
97
|
+
[FIRAuthErrorCodeAppNotAuthorized] = @"app-not-authorized",
|
|
98
|
+
[FIRAuthErrorCodeExpiredActionCode] = @"expired-action-code",
|
|
99
|
+
[FIRAuthErrorCodeInvalidActionCode] = @"invalid-action-code",
|
|
100
|
+
[FIRAuthErrorCodeInvalidMessagePayload] = @"invalid-message-payload",
|
|
101
|
+
[FIRAuthErrorCodeInvalidSender] = @"invalid-sender",
|
|
102
|
+
[FIRAuthErrorCodeInvalidRecipientEmail] = @"invalid-recipient-email",
|
|
103
|
+
[FIRAuthErrorCodeMissingEmail] = @"invalid-email",
|
|
104
|
+
[FIRAuthErrorCodeMissingIosBundleID] = @"missing-ios-bundle-id",
|
|
105
|
+
[FIRAuthErrorCodeMissingAndroidPackageName] = @"missing-android-pkg-name",
|
|
106
|
+
[FIRAuthErrorCodeUnauthorizedDomain] = @"unauthorized-domain",
|
|
107
|
+
[FIRAuthErrorCodeInvalidContinueURI] = @"invalid-continue-uri",
|
|
108
|
+
[FIRAuthErrorCodeMissingContinueURI] = @"missing-continue-uri",
|
|
109
|
+
[FIRAuthErrorCodeMissingPhoneNumber] = @"missing-phone-number",
|
|
110
|
+
[FIRAuthErrorCodeInvalidPhoneNumber] = @"invalid-phone-number",
|
|
111
|
+
[FIRAuthErrorCodeMissingVerificationCode] = @"missing-verification-code",
|
|
112
|
+
[FIRAuthErrorCodeInvalidVerificationCode] = @"invalid-verification-code",
|
|
113
|
+
[FIRAuthErrorCodeMissingVerificationID] = @"missing-verification-id",
|
|
114
|
+
[FIRAuthErrorCodeInvalidVerificationID] = @"invalid-verification-id",
|
|
115
|
+
[FIRAuthErrorCodeMissingAppCredential] = @"missing-app-credential",
|
|
116
|
+
[FIRAuthErrorCodeInvalidAppCredential] = @"invalid-app-credential",
|
|
117
|
+
[FIRAuthErrorCodeSessionExpired] = @"code-expired",
|
|
118
|
+
[FIRAuthErrorCodeQuotaExceeded] = @"quota-exceeded",
|
|
119
|
+
[FIRAuthErrorCodeMissingAppToken] = @"missing-apns-token",
|
|
120
|
+
[FIRAuthErrorCodeNotificationNotForwarded] = @"notification-not-forwarded",
|
|
121
|
+
[FIRAuthErrorCodeAppNotVerified] = @"app-not-verified",
|
|
122
|
+
[FIRAuthErrorCodeCaptchaCheckFailed] = @"captcha-check-failed",
|
|
123
|
+
[FIRAuthErrorCodeWebContextAlreadyPresented] = @"cancelled-popup-request",
|
|
124
|
+
[FIRAuthErrorCodeWebContextCancelled] = @"popup-closed-by-user",
|
|
125
|
+
[FIRAuthErrorCodeAppVerificationUserInteractionFailure] =
|
|
126
|
+
@"app-verification-user-interaction-failure",
|
|
127
|
+
[FIRAuthErrorCodeInvalidClientID] = @"invalid-oauth-client-id",
|
|
128
|
+
[FIRAuthErrorCodeWebNetworkRequestFailed] = @"network-request-failed",
|
|
129
|
+
[FIRAuthErrorCodeWebInternalError] = @"internal-error",
|
|
130
|
+
[FIRAuthErrorCodeNullUser] = @"null-user",
|
|
131
|
+
[FIRAuthErrorCodeKeychainError] = @"keychain-error",
|
|
132
|
+
[FIRAuthErrorCodeInternalError] = @"internal-error",
|
|
133
|
+
[FIRAuthErrorCodeMalformedJWT] = @"malformed-jwt",
|
|
134
|
+
[FIRAuthErrorCodeSecondFactorRequired] = @"multi-factor-auth-required"};
|
|
135
|
+
|
|
53
136
|
static __strong NSMutableDictionary *authStateHandlers;
|
|
54
137
|
static __strong NSMutableDictionary *idTokenHandlers;
|
|
55
138
|
static __strong NSMutableDictionary *emulatorConfigs;
|
|
@@ -61,18 +144,60 @@ static __strong NSMutableDictionary<NSString *, FIRMultiFactorSession *> *cached
|
|
|
61
144
|
static __strong NSMutableDictionary<NSString *, FIRTOTPSecret *> *cachedTotpSecrets;
|
|
62
145
|
#endif
|
|
63
146
|
|
|
64
|
-
@
|
|
65
|
-
#pragma mark -
|
|
66
|
-
#pragma mark Module Setup
|
|
147
|
+
@interface RNFBAuthHelper ()
|
|
67
148
|
|
|
68
|
-
|
|
149
|
+
+ (NSString *)nonEmptyStringFromDictionary:(NSDictionary *)dictionary key:(NSString *)key;
|
|
150
|
+
+ (NSPersonNameComponents *)personNameComponentsFromDictionary:(NSDictionary *)dictionary;
|
|
69
151
|
|
|
70
|
-
+ (
|
|
71
|
-
|
|
72
|
-
|
|
152
|
+
+ (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider
|
|
153
|
+
token:(NSString *)authToken
|
|
154
|
+
secret:(NSString *)authTokenSecret
|
|
155
|
+
firebaseApp:(FIRApp *)firebaseApp;
|
|
156
|
+
|
|
157
|
+
+ (void)reloadAndReturnUser:(FIRUser *)user
|
|
158
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
159
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
160
|
+
firebaseApp:(FIRApp *)firebaseApp;
|
|
161
|
+
|
|
162
|
+
+ (void)promiseNoUser:(RCTPromiseResolveBlock)resolve
|
|
163
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
164
|
+
isError:(BOOL)isError;
|
|
165
|
+
|
|
166
|
+
#if TARGET_OS_IOS
|
|
167
|
+
+ (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver;
|
|
168
|
+
#endif
|
|
169
|
+
|
|
170
|
+
+ (void)promiseRejectAuthException:(RCTPromiseRejectBlock)reject error:(NSError *)error;
|
|
171
|
+
+ (NSDictionary *)getJSError:(NSError *)error;
|
|
172
|
+
|
|
173
|
+
+ (void)promiseWithUser:(RCTPromiseResolveBlock)resolve
|
|
174
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
175
|
+
user:(FIRUser *)user;
|
|
176
|
+
|
|
177
|
+
+ (void)promiseWithAuthResult:(RCTPromiseResolveBlock)resolve
|
|
178
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
179
|
+
authResult:(FIRAuthDataResult *)authResult;
|
|
180
|
+
|
|
181
|
+
+ (NSArray<NSObject *> *)convertProviderData:(NSArray<id<FIRUserInfo>> *)providerData;
|
|
182
|
+
+ (NSDictionary *)firebaseUserToDict:(FIRUser *)user;
|
|
183
|
+
|
|
184
|
+
#if TARGET_OS_IOS
|
|
185
|
+
+ (NSArray<NSMutableDictionary *> *)convertMultiFactorData:(NSArray<FIRMultiFactorInfo *> *)hints;
|
|
186
|
+
#endif
|
|
187
|
+
|
|
188
|
+
+ (NSDictionary *)authCredentialToDict:(FIRAuthCredential *)authCredential;
|
|
189
|
+
+ (FIRActionCodeSettings *)buildActionCodeSettings:(NSDictionary *)actionCodeSettings;
|
|
190
|
+
|
|
191
|
+
+ (void)initializeSharedStateOnce;
|
|
192
|
+
|
|
193
|
+
@end
|
|
194
|
+
|
|
195
|
+
@implementation RNFBAuthHelper
|
|
196
|
+
|
|
197
|
+
#pragma mark -
|
|
198
|
+
#pragma mark Shared state
|
|
73
199
|
|
|
74
|
-
|
|
75
|
-
self = [super init];
|
|
200
|
+
+ (void)initializeSharedStateOnce {
|
|
76
201
|
static dispatch_once_t onceToken;
|
|
77
202
|
dispatch_once(&onceToken, ^{
|
|
78
203
|
authStateHandlers = [[NSMutableDictionary alloc] init];
|
|
@@ -85,14 +210,11 @@ RCT_EXPORT_MODULE();
|
|
|
85
210
|
cachedTotpSecrets = [[NSMutableDictionary alloc] init];
|
|
86
211
|
#endif
|
|
87
212
|
});
|
|
88
|
-
return self;
|
|
89
213
|
}
|
|
90
214
|
|
|
91
|
-
|
|
92
|
-
[self
|
|
93
|
-
}
|
|
215
|
+
+ (void)invalidate {
|
|
216
|
+
[self initializeSharedStateOnce];
|
|
94
217
|
|
|
95
|
-
- (void)invalidate {
|
|
96
218
|
for (NSString *key in authStateHandlers) {
|
|
97
219
|
FIRApp *firebaseApp = [RCTConvert firAppFromString:key];
|
|
98
220
|
|
|
@@ -119,7 +241,10 @@ RCT_EXPORT_MODULE();
|
|
|
119
241
|
#pragma mark -
|
|
120
242
|
#pragma mark Firebase Auth Methods
|
|
121
243
|
|
|
122
|
-
|
|
244
|
+
+ (void)addAuthStateListener:(NSString *)appName {
|
|
245
|
+
[self initializeSharedStateOnce];
|
|
246
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
247
|
+
|
|
123
248
|
if (![authStateHandlers valueForKey:firebaseApp.name]) {
|
|
124
249
|
FIRAuthStateDidChangeListenerHandle newListenerHandle = [[FIRAuth authWithApp:firebaseApp]
|
|
125
250
|
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
|
|
@@ -135,7 +260,10 @@ RCT_EXPORT_METHOD(addAuthStateListener : (FIRApp *)firebaseApp) {
|
|
|
135
260
|
}
|
|
136
261
|
}
|
|
137
262
|
|
|
138
|
-
|
|
263
|
+
+ (void)removeAuthStateListener:(NSString *)appName {
|
|
264
|
+
[self initializeSharedStateOnce];
|
|
265
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
266
|
+
|
|
139
267
|
if ([authStateHandlers valueForKey:firebaseApp.name]) {
|
|
140
268
|
[[FIRAuth authWithApp:firebaseApp]
|
|
141
269
|
removeAuthStateDidChangeListener:[authStateHandlers valueForKey:firebaseApp.name]];
|
|
@@ -143,7 +271,10 @@ RCT_EXPORT_METHOD(removeAuthStateListener : (FIRApp *)firebaseApp) {
|
|
|
143
271
|
}
|
|
144
272
|
}
|
|
145
273
|
|
|
146
|
-
|
|
274
|
+
+ (void)addIdTokenListener:(NSString *)appName {
|
|
275
|
+
[self initializeSharedStateOnce];
|
|
276
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
277
|
+
|
|
147
278
|
if (![idTokenHandlers valueForKey:firebaseApp.name]) {
|
|
148
279
|
FIRIDTokenDidChangeListenerHandle newListenerHandle = [[FIRAuth authWithApp:firebaseApp]
|
|
149
280
|
addIDTokenDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
|
|
@@ -161,7 +292,10 @@ RCT_EXPORT_METHOD(addIdTokenListener : (FIRApp *)firebaseApp) {
|
|
|
161
292
|
}
|
|
162
293
|
}
|
|
163
294
|
|
|
164
|
-
|
|
295
|
+
+ (void)removeIdTokenListener:(NSString *)appName {
|
|
296
|
+
[self initializeSharedStateOnce];
|
|
297
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
298
|
+
|
|
165
299
|
if ([idTokenHandlers valueForKey:firebaseApp.name]) {
|
|
166
300
|
[[FIRAuth authWithApp:firebaseApp]
|
|
167
301
|
removeIDTokenDidChangeListener:[idTokenHandlers valueForKey:firebaseApp.name]];
|
|
@@ -169,7 +303,9 @@ RCT_EXPORT_METHOD(removeIdTokenListener : (FIRApp *)firebaseApp) {
|
|
|
169
303
|
}
|
|
170
304
|
}
|
|
171
305
|
|
|
172
|
-
|
|
306
|
+
+ (void)configureAuthDomain:(NSString *)appName {
|
|
307
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
308
|
+
|
|
173
309
|
NSString *authDomain = [RNFBAppModule getCustomDomain:firebaseApp.name];
|
|
174
310
|
DLog(@"RNFBAuth app: %@ customAuthDomain: %@", firebaseApp.name, authDomain);
|
|
175
311
|
if (authDomain != nil) {
|
|
@@ -177,22 +313,30 @@ RCT_EXPORT_METHOD(configureAuthDomain : (FIRApp *)firebaseApp) {
|
|
|
177
313
|
}
|
|
178
314
|
}
|
|
179
315
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
316
|
+
+ (void)getCustomAuthDomain:(NSString *)appName
|
|
317
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
318
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
319
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
320
|
+
|
|
184
321
|
resolve([FIRAuth authWithApp:firebaseApp].customAuthDomain);
|
|
185
322
|
}
|
|
186
323
|
|
|
187
|
-
|
|
324
|
+
+ (void)setAppVerificationDisabledForTesting:(NSString *)appName
|
|
325
|
+
disabled:(BOOL)disabled
|
|
326
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
327
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
328
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
329
|
+
|
|
188
330
|
[FIRAuth authWithApp:firebaseApp].settings.appVerificationDisabledForTesting = disabled;
|
|
331
|
+
resolve([NSNull null]);
|
|
189
332
|
}
|
|
190
333
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
334
|
+
+ (void)useUserAccessGroup:(NSString *)appName
|
|
335
|
+
userAccessGroup:(NSString *)userAccessGroup
|
|
336
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
337
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
338
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
339
|
+
|
|
196
340
|
NSError *error;
|
|
197
341
|
[[FIRAuth authWithApp:firebaseApp] useUserAccessGroup:userAccessGroup error:&error];
|
|
198
342
|
|
|
@@ -204,10 +348,11 @@ RCT_EXPORT_METHOD(useUserAccessGroup
|
|
|
204
348
|
return;
|
|
205
349
|
}
|
|
206
350
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
351
|
+
+ (void)signOut:(NSString *)appName
|
|
352
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
353
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
354
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
355
|
+
|
|
211
356
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
212
357
|
|
|
213
358
|
if (user) {
|
|
@@ -224,10 +369,11 @@ RCT_EXPORT_METHOD(signOut
|
|
|
224
369
|
[self promiseNoUser:resolve rejecter:reject isError:YES];
|
|
225
370
|
}
|
|
226
371
|
|
|
227
|
-
|
|
228
|
-
:
|
|
229
|
-
|
|
230
|
-
|
|
372
|
+
+ (void)signInAnonymously:(NSString *)appName
|
|
373
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
374
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
375
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
376
|
+
|
|
231
377
|
[[FIRAuth authWithApp:firebaseApp]
|
|
232
378
|
signInAnonymouslyWithCompletion:^(FIRAuthDataResult *authResult, NSError *error) {
|
|
233
379
|
if (error) {
|
|
@@ -238,12 +384,13 @@ RCT_EXPORT_METHOD(signInAnonymously
|
|
|
238
384
|
}];
|
|
239
385
|
}
|
|
240
386
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
387
|
+
+ (void)signInWithEmailAndPassword:(NSString *)appName
|
|
388
|
+
email:(NSString *)email
|
|
389
|
+
password:(NSString *)password
|
|
390
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
391
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
392
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
393
|
+
|
|
247
394
|
[[FIRAuth authWithApp:firebaseApp]
|
|
248
395
|
signInWithEmail:email
|
|
249
396
|
password:password
|
|
@@ -256,21 +403,20 @@ RCT_EXPORT_METHOD(signInWithEmailAndPassword
|
|
|
256
403
|
}];
|
|
257
404
|
}
|
|
258
405
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
resolve(
|
|
265
|
-
@([RCTConvert BOOL:@([[FIRAuth authWithApp:firebaseApp] isSignInWithEmailLink:emailLink])]));
|
|
406
|
+
+ (NSNumber *)isSignInWithEmailLink:(NSString *)appName emailLink:(NSString *)emailLink {
|
|
407
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
408
|
+
|
|
409
|
+
return
|
|
410
|
+
@([RCTConvert BOOL:@([[FIRAuth authWithApp:firebaseApp] isSignInWithEmailLink:emailLink])]);
|
|
266
411
|
}
|
|
267
412
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
413
|
+
+ (void)signInWithEmailLink:(NSString *)appName
|
|
414
|
+
email:(NSString *)email
|
|
415
|
+
emailLink:(NSString *)emailLink
|
|
416
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
417
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
418
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
419
|
+
|
|
274
420
|
[[FIRAuth authWithApp:firebaseApp]
|
|
275
421
|
signInWithEmail:email
|
|
276
422
|
link:emailLink
|
|
@@ -283,12 +429,13 @@ RCT_EXPORT_METHOD(signInWithEmailLink
|
|
|
283
429
|
}];
|
|
284
430
|
}
|
|
285
431
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
432
|
+
+ (void)createUserWithEmailAndPassword:(NSString *)appName
|
|
433
|
+
email:(NSString *)email
|
|
434
|
+
password:(NSString *)password
|
|
435
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
436
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
437
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
438
|
+
|
|
292
439
|
[[FIRAuth authWithApp:firebaseApp]
|
|
293
440
|
createUserWithEmail:email
|
|
294
441
|
password:password
|
|
@@ -301,10 +448,11 @@ RCT_EXPORT_METHOD(createUserWithEmailAndPassword
|
|
|
301
448
|
}];
|
|
302
449
|
}
|
|
303
450
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
451
|
+
+ (void)deleteUser:(NSString *)appName
|
|
452
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
453
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
454
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
455
|
+
|
|
308
456
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
309
457
|
|
|
310
458
|
if (user) {
|
|
@@ -320,10 +468,11 @@ RCT_EXPORT_METHOD(delete
|
|
|
320
468
|
}
|
|
321
469
|
}
|
|
322
470
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
471
|
+
+ (void)reload:(NSString *)appName
|
|
472
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
473
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
474
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
475
|
+
|
|
327
476
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
328
477
|
if (user) {
|
|
329
478
|
[self reloadAndReturnUser:user resolver:resolve rejecter:reject firebaseApp:firebaseApp];
|
|
@@ -332,11 +481,12 @@ RCT_EXPORT_METHOD(reload
|
|
|
332
481
|
}
|
|
333
482
|
}
|
|
334
483
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
484
|
+
+ (void)sendEmailVerification:(NSString *)appName
|
|
485
|
+
actionCodeSettings:(NSDictionary *)actionCodeSettings
|
|
486
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
487
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
488
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
489
|
+
|
|
340
490
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
341
491
|
if (user) {
|
|
342
492
|
id handler = ^(NSError *_Nullable error) {
|
|
@@ -358,12 +508,13 @@ RCT_EXPORT_METHOD(sendEmailVerification
|
|
|
358
508
|
}
|
|
359
509
|
}
|
|
360
510
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
511
|
+
+ (void)verifyBeforeUpdateEmail:(NSString *)appName
|
|
512
|
+
email:(NSString *)email
|
|
513
|
+
actionCodeSettings:(NSDictionary *)actionCodeSettings
|
|
514
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
515
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
516
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
517
|
+
|
|
367
518
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
368
519
|
if (user) {
|
|
369
520
|
id handler = ^(NSError *_Nullable error) {
|
|
@@ -387,11 +538,12 @@ RCT_EXPORT_METHOD(verifyBeforeUpdateEmail
|
|
|
387
538
|
}
|
|
388
539
|
}
|
|
389
540
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
541
|
+
+ (void)updateEmail:(NSString *)appName
|
|
542
|
+
email:(NSString *)email
|
|
543
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
544
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
545
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
546
|
+
|
|
395
547
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
396
548
|
|
|
397
549
|
if (user) {
|
|
@@ -411,11 +563,12 @@ RCT_EXPORT_METHOD(updateEmail
|
|
|
411
563
|
}
|
|
412
564
|
}
|
|
413
565
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
566
|
+
+ (void)updatePassword:(NSString *)appName
|
|
567
|
+
password:(NSString *)password
|
|
568
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
569
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
570
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
571
|
+
|
|
419
572
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
420
573
|
|
|
421
574
|
if (user) {
|
|
@@ -434,13 +587,14 @@ RCT_EXPORT_METHOD(updatePassword
|
|
|
434
587
|
}
|
|
435
588
|
|
|
436
589
|
#if TARGET_OS_IOS
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
:
|
|
442
|
-
|
|
443
|
-
|
|
590
|
+
+ (void)updatePhoneNumber:(NSString *)appName
|
|
591
|
+
provider:(NSString *)provider
|
|
592
|
+
authToken:(NSString *)authToken
|
|
593
|
+
authSecret:(NSString *)authSecret
|
|
594
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
595
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
596
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
597
|
+
|
|
444
598
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
445
599
|
|
|
446
600
|
if (user) {
|
|
@@ -476,11 +630,12 @@ RCT_EXPORT_METHOD(updatePhoneNumber
|
|
|
476
630
|
}
|
|
477
631
|
#endif
|
|
478
632
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
633
|
+
+ (void)updateProfile:(NSString *)appName
|
|
634
|
+
props:(NSDictionary *)props
|
|
635
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
636
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
637
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
638
|
+
|
|
484
639
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
485
640
|
|
|
486
641
|
if (user) {
|
|
@@ -512,11 +667,12 @@ RCT_EXPORT_METHOD(updateProfile
|
|
|
512
667
|
}
|
|
513
668
|
}
|
|
514
669
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
670
|
+
+ (void)getIdToken:(NSString *)appName
|
|
671
|
+
forceRefresh:(BOOL)forceRefresh
|
|
672
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
673
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
674
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
675
|
+
|
|
520
676
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
521
677
|
|
|
522
678
|
if (user) {
|
|
@@ -533,11 +689,12 @@ RCT_EXPORT_METHOD(getIdToken
|
|
|
533
689
|
}
|
|
534
690
|
}
|
|
535
691
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
:
|
|
540
|
-
|
|
692
|
+
+ (void)getIdTokenResult:(NSString *)appName
|
|
693
|
+
forceRefresh:(BOOL)forceRefresh
|
|
694
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
695
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
696
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
697
|
+
|
|
541
698
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
542
699
|
|
|
543
700
|
if (user) {
|
|
@@ -579,17 +736,33 @@ RCT_EXPORT_METHOD(getIdTokenResult
|
|
|
579
736
|
}
|
|
580
737
|
}
|
|
581
738
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
:
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
739
|
+
+ (void)signInWithCredential:(NSString *)appName
|
|
740
|
+
provider:(NSString *)provider
|
|
741
|
+
authToken:(NSString *)authToken
|
|
742
|
+
authSecret:(NSString *)authSecret
|
|
743
|
+
fullName:(NSDictionary *)fullName
|
|
744
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
745
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
746
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
747
|
+
|
|
589
748
|
FIRAuthCredential *credential = [self getCredentialForProvider:provider
|
|
590
749
|
token:authToken
|
|
591
750
|
secret:authSecret
|
|
592
751
|
firebaseApp:firebaseApp];
|
|
752
|
+
|
|
753
|
+
// Sign in with Apple: if the caller supplied a non-empty fullName (only available on the
|
|
754
|
+
// user's first authorization), rebuild the credential so Firebase can store displayName.
|
|
755
|
+
// See AppleFullPersonName in auth.ts.
|
|
756
|
+
if ([provider compare:@"apple.com" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
|
|
757
|
+
NSPersonNameComponents *personNameComponents =
|
|
758
|
+
[self personNameComponentsFromDictionary:fullName];
|
|
759
|
+
if (personNameComponents != nil) {
|
|
760
|
+
credential = [FIROAuthProvider appleCredentialWithIDToken:authToken
|
|
761
|
+
rawNonce:authSecret
|
|
762
|
+
fullName:personNameComponents];
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
593
766
|
if (credential == nil) {
|
|
594
767
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
595
768
|
userInfo:(NSMutableDictionary *)@{
|
|
@@ -611,11 +784,12 @@ RCT_EXPORT_METHOD(signInWithCredential
|
|
|
611
784
|
}];
|
|
612
785
|
}
|
|
613
786
|
|
|
614
|
-
|
|
615
|
-
:
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
787
|
+
+ (void)signInWithProvider:(NSString *)appName
|
|
788
|
+
provider:(NSDictionary *)provider
|
|
789
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
790
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
791
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
792
|
+
|
|
619
793
|
NSString *providerId = provider[@"providerId"];
|
|
620
794
|
if (providerId == nil) {
|
|
621
795
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
@@ -671,12 +845,13 @@ RCT_EXPORT_METHOD(signInWithProvider
|
|
|
671
845
|
#endif
|
|
672
846
|
}
|
|
673
847
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
848
|
+
+ (void)confirmPasswordReset:(NSString *)appName
|
|
849
|
+
code:(NSString *)code
|
|
850
|
+
newPassword:(NSString *)newPassword
|
|
851
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
852
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
853
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
854
|
+
|
|
680
855
|
[[FIRAuth authWithApp:firebaseApp]
|
|
681
856
|
confirmPasswordResetWithCode:code
|
|
682
857
|
newPassword:newPassword
|
|
@@ -689,11 +864,12 @@ RCT_EXPORT_METHOD(confirmPasswordReset
|
|
|
689
864
|
}];
|
|
690
865
|
}
|
|
691
866
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
867
|
+
+ (void)applyActionCode:(NSString *)appName
|
|
868
|
+
code:(NSString *)code
|
|
869
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
870
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
871
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
872
|
+
|
|
697
873
|
[[FIRAuth authWithApp:firebaseApp]
|
|
698
874
|
applyActionCode:code
|
|
699
875
|
completion:^(NSError *_Nullable error) {
|
|
@@ -707,11 +883,12 @@ RCT_EXPORT_METHOD(applyActionCode
|
|
|
707
883
|
}];
|
|
708
884
|
}
|
|
709
885
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
886
|
+
+ (void)checkActionCode:(NSString *)appName
|
|
887
|
+
code:(NSString *)code
|
|
888
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
889
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
890
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
891
|
+
|
|
715
892
|
[[FIRAuth authWithApp:firebaseApp]
|
|
716
893
|
checkActionCode:code
|
|
717
894
|
completion:^(FIRActionCodeInfo *_Nullable info, NSError *_Nullable error) {
|
|
@@ -763,11 +940,12 @@ RCT_EXPORT_METHOD(checkActionCode
|
|
|
763
940
|
}];
|
|
764
941
|
}
|
|
765
942
|
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
943
|
+
+ (void)revokeToken:(NSString *)appName
|
|
944
|
+
authorizationCode:(NSString *)authorizationCode
|
|
945
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
946
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
947
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
948
|
+
|
|
771
949
|
[[FIRAuth authWithApp:firebaseApp]
|
|
772
950
|
revokeTokenWithAuthorizationCode:authorizationCode
|
|
773
951
|
completion:^(NSError *_Nullable error) {
|
|
@@ -779,12 +957,13 @@ RCT_EXPORT_METHOD(revokeToken
|
|
|
779
957
|
}];
|
|
780
958
|
}
|
|
781
959
|
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
960
|
+
+ (void)sendPasswordResetEmail:(NSString *)appName
|
|
961
|
+
email:(NSString *)email
|
|
962
|
+
actionCodeSettings:(NSDictionary *)actionCodeSettings
|
|
963
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
964
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
965
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
966
|
+
|
|
788
967
|
id handler = ^(NSError *_Nullable error) {
|
|
789
968
|
if (error) {
|
|
790
969
|
[self promiseRejectAuthException:reject error:error];
|
|
@@ -803,12 +982,13 @@ RCT_EXPORT_METHOD(sendPasswordResetEmail
|
|
|
803
982
|
}
|
|
804
983
|
}
|
|
805
984
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
985
|
+
+ (void)sendSignInLinkToEmail:(NSString *)appName
|
|
986
|
+
email:(NSString *)email
|
|
987
|
+
actionCodeSettings:(NSDictionary *)actionCodeSettings
|
|
988
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
989
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
990
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
991
|
+
|
|
812
992
|
id handler = ^(NSError *_Nullable error) {
|
|
813
993
|
if (error) {
|
|
814
994
|
[self promiseRejectAuthException:reject error:error];
|
|
@@ -823,11 +1003,12 @@ RCT_EXPORT_METHOD(sendSignInLinkToEmail
|
|
|
823
1003
|
completion:handler];
|
|
824
1004
|
}
|
|
825
1005
|
|
|
826
|
-
|
|
827
|
-
:
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
1006
|
+
+ (void)signInWithCustomToken:(NSString *)appName
|
|
1007
|
+
customToken:(NSString *)customToken
|
|
1008
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1009
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1010
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1011
|
+
|
|
831
1012
|
[[FIRAuth authWithApp:firebaseApp]
|
|
832
1013
|
signInWithCustomToken:customToken
|
|
833
1014
|
completion:^(FIRAuthDataResult *authResult, NSError *error) {
|
|
@@ -840,13 +1021,17 @@ RCT_EXPORT_METHOD(signInWithCustomToken
|
|
|
840
1021
|
}
|
|
841
1022
|
|
|
842
1023
|
#if TARGET_OS_IOS
|
|
843
|
-
|
|
844
|
-
:
|
|
845
|
-
:
|
|
846
|
-
|
|
847
|
-
|
|
1024
|
+
+ (void)signInWithPhoneNumber:(NSString *)appName
|
|
1025
|
+
phoneNumber:(NSString *)phoneNumber
|
|
1026
|
+
forceResend:(BOOL)forceResend
|
|
1027
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1028
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1029
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1030
|
+
|
|
848
1031
|
DLog(@"SignInWthPhoneNumber instance: %@", firebaseApp.name);
|
|
849
1032
|
|
|
1033
|
+
(void)forceResend;
|
|
1034
|
+
|
|
850
1035
|
[[FIRPhoneAuthProvider providerWithAuth:[FIRAuth authWithApp:firebaseApp]]
|
|
851
1036
|
verifyPhoneNumber:phoneNumber
|
|
852
1037
|
UIDelegate:nil
|
|
@@ -860,12 +1045,15 @@ RCT_EXPORT_METHOD(signInWithPhoneNumber
|
|
|
860
1045
|
}
|
|
861
1046
|
}];
|
|
862
1047
|
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
1048
|
+
|
|
1049
|
+
+ (void)verifyPhoneNumberWithMultiFactorInfo:(NSString *)appName
|
|
1050
|
+
hintUid:(NSString *)hintUid
|
|
1051
|
+
sessionKey:(NSString *)sessionKey
|
|
1052
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1053
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1054
|
+
[self initializeSharedStateOnce];
|
|
1055
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1056
|
+
|
|
869
1057
|
if ([cachedResolver valueForKey:sessionKey] == nil) {
|
|
870
1058
|
[RNFBSharedUtils
|
|
871
1059
|
rejectPromiseWithUserInfo:reject
|
|
@@ -905,16 +1093,18 @@ RCT_EXPORT_METHOD(verifyPhoneNumberWithMultiFactorInfo
|
|
|
905
1093
|
}];
|
|
906
1094
|
}
|
|
907
1095
|
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
1096
|
+
+ (void)verifyPhoneNumberForMultiFactor:(NSString *)appName
|
|
1097
|
+
phoneNumber:(NSString *)phoneNumber
|
|
1098
|
+
sessionKey:(NSString *)sessionKey
|
|
1099
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1100
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1101
|
+
[self initializeSharedStateOnce];
|
|
1102
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1103
|
+
|
|
914
1104
|
DLog(@"verifyPhoneNumberForMultifactor using app: %@", firebaseApp.name);
|
|
915
1105
|
DLog(@"verifyPhoneNumberForMultifactor phoneNumber: %@", phoneNumber);
|
|
916
|
-
DLog(@"verifyPhoneNumberForMultifactor
|
|
917
|
-
FIRMultiFactorSession *session = cachedSessions[
|
|
1106
|
+
DLog(@"verifyPhoneNumberForMultifactor sessionKey: %@", sessionKey);
|
|
1107
|
+
FIRMultiFactorSession *session = cachedSessions[sessionKey];
|
|
918
1108
|
if (session == nil) {
|
|
919
1109
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
920
1110
|
userInfo:(NSMutableDictionary *)@{
|
|
@@ -937,13 +1127,15 @@ RCT_EXPORT_METHOD(verifyPhoneNumberForMultiFactor
|
|
|
937
1127
|
}];
|
|
938
1128
|
}
|
|
939
1129
|
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
:
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
1130
|
+
+ (void)resolveMultiFactorSignIn:(NSString *)appName
|
|
1131
|
+
session:(NSString *)session
|
|
1132
|
+
verificationId:(NSString *)verificationId
|
|
1133
|
+
verificationCode:(NSString *)verificationCode
|
|
1134
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1135
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1136
|
+
[self initializeSharedStateOnce];
|
|
1137
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1138
|
+
|
|
947
1139
|
DLog(@"using instance resolve MultiFactorSignIn: %@", firebaseApp.name);
|
|
948
1140
|
|
|
949
1141
|
FIRPhoneAuthCredential *credential =
|
|
@@ -955,28 +1147,29 @@ RCT_EXPORT_METHOD(resolveMultiFactorSignIn
|
|
|
955
1147
|
FIRMultiFactorAssertion *assertion =
|
|
956
1148
|
[FIRPhoneMultiFactorGenerator assertionWithCredential:credential];
|
|
957
1149
|
|
|
958
|
-
[cachedResolver[
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
1150
|
+
[cachedResolver[session] resolveSignInWithAssertion:assertion
|
|
1151
|
+
completion:^(FIRAuthDataResult *_Nullable authResult,
|
|
1152
|
+
NSError *_Nullable error) {
|
|
1153
|
+
DLog(@"authError: %@", error) if (error) {
|
|
1154
|
+
[self promiseRejectAuthException:reject error:error];
|
|
1155
|
+
}
|
|
1156
|
+
else {
|
|
1157
|
+
[self promiseWithAuthResult:resolve
|
|
1158
|
+
rejecter:reject
|
|
1159
|
+
authResult:authResult];
|
|
1160
|
+
}
|
|
1161
|
+
}];
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
+ (void)resolveTotpSignIn:(NSString *)appName
|
|
1165
|
+
sessionKey:(NSString *)sessionKey
|
|
1166
|
+
uid:(NSString *)uid
|
|
1167
|
+
oneTimePassword:(NSString *)oneTimePassword
|
|
1168
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1169
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1170
|
+
[self initializeSharedStateOnce];
|
|
1171
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
972
1172
|
|
|
973
|
-
RCT_EXPORT_METHOD(resolveTotpSignIn
|
|
974
|
-
: (FIRApp *)firebaseApp
|
|
975
|
-
: (NSString *)sessionKey
|
|
976
|
-
: (NSString *)uid
|
|
977
|
-
: (NSString *)oneTimePassword
|
|
978
|
-
: (RCTPromiseResolveBlock)resolve
|
|
979
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
980
1173
|
DLog(@"using instance resolve TotpSignIn: %@", firebaseApp.name);
|
|
981
1174
|
|
|
982
1175
|
FIRMultiFactorAssertion *assertion =
|
|
@@ -997,11 +1190,13 @@ RCT_EXPORT_METHOD(resolveTotpSignIn
|
|
|
997
1190
|
}];
|
|
998
1191
|
}
|
|
999
1192
|
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1193
|
+
+ (void)generateTotpSecret:(NSString *)appName
|
|
1194
|
+
sessionKey:(NSString *)sessionKey
|
|
1195
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1196
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1197
|
+
[self initializeSharedStateOnce];
|
|
1198
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1199
|
+
|
|
1005
1200
|
DLog(@"using instance resolve generateTotpSecret: %@", firebaseApp.name);
|
|
1006
1201
|
|
|
1007
1202
|
FIRMultiFactorSession *session = cachedSessions[sessionKey];
|
|
@@ -1026,35 +1221,42 @@ RCT_EXPORT_METHOD(generateTotpSecret
|
|
|
1026
1221
|
}];
|
|
1027
1222
|
}
|
|
1028
1223
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1224
|
+
+ (NSString *)generateQrCodeUrl:(NSString *)appName
|
|
1225
|
+
secretKey:(NSString *)secretKey
|
|
1226
|
+
account:(NSString *)account
|
|
1227
|
+
issuer:(NSString *)issuer {
|
|
1228
|
+
[self initializeSharedStateOnce];
|
|
1229
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1230
|
+
|
|
1036
1231
|
DLog(@"generateQrCodeUrl using instance resolve generateQrCodeUrl: %@", firebaseApp.name);
|
|
1037
1232
|
DLog(@"generateQrCodeUrl using secretKey: %@", secretKey);
|
|
1038
1233
|
FIRTOTPSecret *totpSecret = cachedTotpSecrets[secretKey];
|
|
1039
|
-
|
|
1234
|
+
if (!totpSecret) {
|
|
1235
|
+
RNFBAuthThrowSyncErrorWithCode(@"invalid-multi-factor-secret",
|
|
1236
|
+
@"can't find secret for provided key");
|
|
1237
|
+
}
|
|
1238
|
+
NSString *url = [totpSecret generateQRCodeURLWithAccountName:account issuer:issuer];
|
|
1040
1239
|
DLog(@"generateQrCodeUrl got QR Code URL %@", url);
|
|
1041
|
-
|
|
1240
|
+
return url;
|
|
1042
1241
|
}
|
|
1043
1242
|
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1243
|
+
+ (void)openInOtpApp:(NSString *)appName
|
|
1244
|
+
secretKey:(NSString *)secretKey
|
|
1245
|
+
qrCodeUri:(NSString *)qrCodeUri {
|
|
1246
|
+
[self initializeSharedStateOnce];
|
|
1247
|
+
|
|
1048
1248
|
DLog(@"generateQrCodeUrl using secretKey: %@", secretKey);
|
|
1049
1249
|
FIRTOTPSecret *totpSecret = cachedTotpSecrets[secretKey];
|
|
1050
1250
|
DLog(@"openInOtpApp using qrCodeUri: %@", qrCodeUri);
|
|
1051
1251
|
[totpSecret openInOTPAppWithQRCodeURL:qrCodeUri];
|
|
1052
1252
|
}
|
|
1053
1253
|
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1254
|
+
+ (void)getSession:(NSString *)appName
|
|
1255
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1256
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1257
|
+
[self initializeSharedStateOnce];
|
|
1258
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1259
|
+
|
|
1058
1260
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
1059
1261
|
[[user multiFactor] getSessionWithCompletion:^(FIRMultiFactorSession *_Nullable session,
|
|
1060
1262
|
NSError *_Nullable error) {
|
|
@@ -1069,11 +1271,12 @@ RCT_EXPORT_METHOD(getSession
|
|
|
1069
1271
|
}];
|
|
1070
1272
|
}
|
|
1071
1273
|
|
|
1072
|
-
|
|
1073
|
-
:
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1274
|
+
+ (void)unenrollMultiFactor:(NSString *)appName
|
|
1275
|
+
factorUID:(NSString *)factorUID
|
|
1276
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1277
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1278
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1279
|
+
|
|
1077
1280
|
DLog(@"using instance unenrollMultiFactor: %@", firebaseApp.name);
|
|
1078
1281
|
|
|
1079
1282
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
@@ -1089,13 +1292,14 @@ RCT_EXPORT_METHOD(unenrollMultiFactor
|
|
|
1089
1292
|
}];
|
|
1090
1293
|
}
|
|
1091
1294
|
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1295
|
+
+ (void)finalizeMultiFactorEnrollment:(NSString *)appName
|
|
1296
|
+
verificationId:(NSString *)verificationId
|
|
1297
|
+
verificationCode:(NSString *)verificationCode
|
|
1298
|
+
displayName:(NSString *_Nullable)displayName
|
|
1299
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1300
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1301
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1302
|
+
|
|
1099
1303
|
DLog(@"using instance finalizeMultifactorEnrollment: %@", firebaseApp.name);
|
|
1100
1304
|
|
|
1101
1305
|
FIRPhoneAuthCredential *credential =
|
|
@@ -1118,13 +1322,15 @@ RCT_EXPORT_METHOD(finalizeMultiFactorEnrollment
|
|
|
1118
1322
|
}];
|
|
1119
1323
|
}
|
|
1120
1324
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1325
|
+
+ (void)finalizeTotpEnrollment:(NSString *)appName
|
|
1326
|
+
totpSecret:(NSString *)totpSecret
|
|
1327
|
+
verificationCode:(NSString *)verificationCode
|
|
1328
|
+
displayName:(NSString *_Nullable)displayName
|
|
1329
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1330
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1331
|
+
[self initializeSharedStateOnce];
|
|
1332
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1333
|
+
|
|
1128
1334
|
DLog(@"using instance finalizeTotpEnrollment: %@", firebaseApp.name);
|
|
1129
1335
|
|
|
1130
1336
|
FIRTOTPSecret *cachedTotpSecret = cachedTotpSecrets[totpSecret];
|
|
@@ -1149,10 +1355,13 @@ RCT_EXPORT_METHOD(finalizeTotpEnrollment
|
|
|
1149
1355
|
}];
|
|
1150
1356
|
}
|
|
1151
1357
|
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
:
|
|
1358
|
+
+ (void)verifyPhoneNumber:(NSString *)appName
|
|
1359
|
+
phoneNumber:(NSString *)phoneNumber
|
|
1360
|
+
requestKey:(NSString *)requestKey
|
|
1361
|
+
timeout:(double)timeout
|
|
1362
|
+
forceResend:(BOOL)forceResend {
|
|
1363
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1364
|
+
|
|
1156
1365
|
DLog(@"using instance verifyPhoneNumber: %@", firebaseApp.name);
|
|
1157
1366
|
|
|
1158
1367
|
[[FIRPhoneAuthProvider providerWithAuth:[FIRAuth authWithApp:firebaseApp]]
|
|
@@ -1184,11 +1393,12 @@ RCT_EXPORT_METHOD(verifyPhoneNumber
|
|
|
1184
1393
|
}];
|
|
1185
1394
|
}
|
|
1186
1395
|
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1396
|
+
+ (void)confirmationResultConfirm:(NSString *)appName
|
|
1397
|
+
verificationCode:(NSString *)verificationCode
|
|
1398
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1399
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1400
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1401
|
+
|
|
1192
1402
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
|
1193
1403
|
NSString *verificationId = [defaults stringForKey:@"authVerificationID"];
|
|
1194
1404
|
|
|
@@ -1210,13 +1420,14 @@ RCT_EXPORT_METHOD(confirmationResultConfirm
|
|
|
1210
1420
|
}
|
|
1211
1421
|
#endif
|
|
1212
1422
|
|
|
1213
|
-
|
|
1214
|
-
:
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1423
|
+
+ (void)linkWithCredential:(NSString *)appName
|
|
1424
|
+
provider:(NSString *)provider
|
|
1425
|
+
authToken:(NSString *)authToken
|
|
1426
|
+
authSecret:(NSString *)authSecret
|
|
1427
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1428
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1429
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1430
|
+
|
|
1220
1431
|
FIRAuthCredential *credential = [self getCredentialForProvider:provider
|
|
1221
1432
|
token:authToken
|
|
1222
1433
|
secret:authSecret
|
|
@@ -1246,11 +1457,12 @@ RCT_EXPORT_METHOD(linkWithCredential
|
|
|
1246
1457
|
}
|
|
1247
1458
|
}
|
|
1248
1459
|
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
:
|
|
1253
|
-
|
|
1460
|
+
+ (void)linkWithProvider:(NSString *)appName
|
|
1461
|
+
provider:(NSDictionary *)provider
|
|
1462
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1463
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1464
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1465
|
+
|
|
1254
1466
|
NSString *providerId = provider[@"providerId"];
|
|
1255
1467
|
if (providerId == nil) {
|
|
1256
1468
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
@@ -1311,11 +1523,12 @@ RCT_EXPORT_METHOD(linkWithProvider
|
|
|
1311
1523
|
#endif
|
|
1312
1524
|
}
|
|
1313
1525
|
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1526
|
+
+ (void)unlink:(NSString *)appName
|
|
1527
|
+
providerId:(NSString *)providerId
|
|
1528
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1529
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1530
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1531
|
+
|
|
1319
1532
|
FIRUser *user = [FIRAuth authWithApp:firebaseApp].currentUser;
|
|
1320
1533
|
|
|
1321
1534
|
if (user) {
|
|
@@ -1335,13 +1548,14 @@ RCT_EXPORT_METHOD(unlink
|
|
|
1335
1548
|
}
|
|
1336
1549
|
}
|
|
1337
1550
|
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1551
|
+
+ (void)reauthenticateWithCredential:(NSString *)appName
|
|
1552
|
+
provider:(NSString *)provider
|
|
1553
|
+
authToken:(NSString *)authToken
|
|
1554
|
+
authSecret:(NSString *)authSecret
|
|
1555
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1556
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1557
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1558
|
+
|
|
1345
1559
|
FIRAuthCredential *credential = [self getCredentialForProvider:provider
|
|
1346
1560
|
token:authToken
|
|
1347
1561
|
secret:authSecret
|
|
@@ -1375,11 +1589,12 @@ RCT_EXPORT_METHOD(reauthenticateWithCredential
|
|
|
1375
1589
|
}
|
|
1376
1590
|
}
|
|
1377
1591
|
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1592
|
+
+ (void)reauthenticateWithProvider:(NSString *)appName
|
|
1593
|
+
provider:(NSDictionary *)provider
|
|
1594
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1595
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1596
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1597
|
+
|
|
1383
1598
|
NSString *providerId = provider[@"providerId"];
|
|
1384
1599
|
if (providerId == nil) {
|
|
1385
1600
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
@@ -1440,11 +1655,12 @@ RCT_EXPORT_METHOD(reauthenticateWithProvider
|
|
|
1440
1655
|
#endif
|
|
1441
1656
|
}
|
|
1442
1657
|
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1658
|
+
+ (void)fetchSignInMethodsForEmail:(NSString *)appName
|
|
1659
|
+
email:(NSString *)email
|
|
1660
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1661
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1662
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1663
|
+
|
|
1448
1664
|
[[FIRAuth authWithApp:firebaseApp]
|
|
1449
1665
|
fetchSignInMethodsForEmail:email
|
|
1450
1666
|
completion:^(NSArray<NSString *> *_Nullable providers,
|
|
@@ -1460,7 +1676,9 @@ RCT_EXPORT_METHOD(fetchSignInMethodsForEmail
|
|
|
1460
1676
|
}];
|
|
1461
1677
|
}
|
|
1462
1678
|
|
|
1463
|
-
|
|
1679
|
+
+ (void)setLanguageCode:(NSString *)appName code:(NSString *)code {
|
|
1680
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1681
|
+
|
|
1464
1682
|
if (code) {
|
|
1465
1683
|
[FIRAuth authWithApp:firebaseApp].languageCode = code;
|
|
1466
1684
|
} else {
|
|
@@ -1468,19 +1686,28 @@ RCT_EXPORT_METHOD(setLanguageCode : (FIRApp *)firebaseApp : (NSString *)code) {
|
|
|
1468
1686
|
}
|
|
1469
1687
|
}
|
|
1470
1688
|
|
|
1471
|
-
|
|
1472
|
-
|
|
1689
|
+
+ (void)setTenantId:(NSString *)appName
|
|
1690
|
+
tenantId:(NSString *)tenantId
|
|
1691
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1692
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1693
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1694
|
+
|
|
1695
|
+
[FIRAuth authWithApp:firebaseApp].tenantID = tenantId;
|
|
1696
|
+
resolve([NSNull null]);
|
|
1473
1697
|
}
|
|
1474
1698
|
|
|
1475
|
-
|
|
1699
|
+
+ (void)useDeviceLanguage:(NSString *)appName {
|
|
1700
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1701
|
+
|
|
1476
1702
|
[[FIRAuth authWithApp:firebaseApp] useAppLanguage];
|
|
1477
1703
|
}
|
|
1478
1704
|
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1705
|
+
+ (void)verifyPasswordResetCode:(NSString *)appName
|
|
1706
|
+
code:(NSString *)code
|
|
1707
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
1708
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
1709
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1710
|
+
|
|
1484
1711
|
[[FIRAuth authWithApp:firebaseApp]
|
|
1485
1712
|
verifyPasswordResetCode:code
|
|
1486
1713
|
completion:^(NSString *_Nullable email, NSError *_Nullable error) {
|
|
@@ -1492,20 +1719,73 @@ RCT_EXPORT_METHOD(verifyPasswordResetCode
|
|
|
1492
1719
|
}];
|
|
1493
1720
|
}
|
|
1494
1721
|
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1722
|
+
+ (void)useEmulator:(NSString *)appName host:(nonnull NSString *)host port:(double)port {
|
|
1723
|
+
[self initializeSharedStateOnce];
|
|
1724
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
1725
|
+
|
|
1499
1726
|
if (!emulatorConfigs[firebaseApp.name]) {
|
|
1500
|
-
[[FIRAuth authWithApp:firebaseApp] useEmulatorWithHost:host port:port];
|
|
1727
|
+
[[FIRAuth authWithApp:firebaseApp] useEmulatorWithHost:host port:(NSInteger)port];
|
|
1501
1728
|
emulatorConfigs[firebaseApp.name] = @YES;
|
|
1502
1729
|
}
|
|
1503
1730
|
}
|
|
1504
1731
|
|
|
1505
|
-
|
|
1732
|
+
+ (NSString *)nonEmptyStringFromDictionary:(NSDictionary *)dictionary key:(NSString *)key {
|
|
1733
|
+
id value = dictionary[key];
|
|
1734
|
+
if (![value isKindOfClass:[NSString class]]) {
|
|
1735
|
+
return nil;
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
NSString *stringValue = (NSString *)value;
|
|
1739
|
+
NSString *trimmed = [stringValue
|
|
1740
|
+
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
|
1741
|
+
return trimmed.length > 0 ? stringValue : nil;
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
+ (NSPersonNameComponents *)personNameComponentsFromDictionary:(NSDictionary *)dictionary {
|
|
1745
|
+
if (dictionary == nil || (id)dictionary == [NSNull null]) {
|
|
1746
|
+
return nil;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
NSPersonNameComponents *components = [[NSPersonNameComponents alloc] init];
|
|
1750
|
+
BOOL hasAnyComponent = NO;
|
|
1751
|
+
NSString *namePrefix = [self nonEmptyStringFromDictionary:dictionary key:@"namePrefix"];
|
|
1752
|
+
if (namePrefix != nil) {
|
|
1753
|
+
components.namePrefix = namePrefix;
|
|
1754
|
+
hasAnyComponent = YES;
|
|
1755
|
+
}
|
|
1756
|
+
NSString *givenName = [self nonEmptyStringFromDictionary:dictionary key:@"givenName"];
|
|
1757
|
+
if (givenName != nil) {
|
|
1758
|
+
components.givenName = givenName;
|
|
1759
|
+
hasAnyComponent = YES;
|
|
1760
|
+
}
|
|
1761
|
+
NSString *middleName = [self nonEmptyStringFromDictionary:dictionary key:@"middleName"];
|
|
1762
|
+
if (middleName != nil) {
|
|
1763
|
+
components.middleName = middleName;
|
|
1764
|
+
hasAnyComponent = YES;
|
|
1765
|
+
}
|
|
1766
|
+
NSString *familyName = [self nonEmptyStringFromDictionary:dictionary key:@"familyName"];
|
|
1767
|
+
if (familyName != nil) {
|
|
1768
|
+
components.familyName = familyName;
|
|
1769
|
+
hasAnyComponent = YES;
|
|
1770
|
+
}
|
|
1771
|
+
NSString *nameSuffix = [self nonEmptyStringFromDictionary:dictionary key:@"nameSuffix"];
|
|
1772
|
+
if (nameSuffix != nil) {
|
|
1773
|
+
components.nameSuffix = nameSuffix;
|
|
1774
|
+
hasAnyComponent = YES;
|
|
1775
|
+
}
|
|
1776
|
+
NSString *nickname = [self nonEmptyStringFromDictionary:dictionary key:@"nickname"];
|
|
1777
|
+
if (nickname != nil) {
|
|
1778
|
+
components.nickname = nickname;
|
|
1779
|
+
hasAnyComponent = YES;
|
|
1780
|
+
}
|
|
1781
|
+
return hasAnyComponent ? components : nil;
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
+ (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider
|
|
1506
1785
|
token:(NSString *)authToken
|
|
1507
1786
|
secret:(NSString *)authTokenSecret
|
|
1508
1787
|
firebaseApp:(FIRApp *)firebaseApp {
|
|
1788
|
+
[self initializeSharedStateOnce];
|
|
1509
1789
|
FIRAuthCredential *credential;
|
|
1510
1790
|
|
|
1511
1791
|
// First check if we cached an authToken
|
|
@@ -1559,7 +1839,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1559
1839
|
|
|
1560
1840
|
// This is here to protect against bugs in the iOS SDK which don't
|
|
1561
1841
|
// correctly refresh the user object when performing certain operations
|
|
1562
|
-
|
|
1842
|
+
+ (void)reloadAndReturnUser:(FIRUser *)user
|
|
1563
1843
|
resolver:(RCTPromiseResolveBlock)resolve
|
|
1564
1844
|
rejecter:(RCTPromiseRejectBlock)reject
|
|
1565
1845
|
firebaseApp:(FIRApp *)firebaseApp {
|
|
@@ -1572,7 +1852,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1572
1852
|
}];
|
|
1573
1853
|
}
|
|
1574
1854
|
|
|
1575
|
-
|
|
1855
|
+
+ (void)promiseNoUser:(RCTPromiseResolveBlock)resolve
|
|
1576
1856
|
rejecter:(RCTPromiseRejectBlock)reject
|
|
1577
1857
|
isError:(BOOL)isError {
|
|
1578
1858
|
if (isError) {
|
|
@@ -1587,7 +1867,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1587
1867
|
}
|
|
1588
1868
|
|
|
1589
1869
|
#if TARGET_OS_IOS
|
|
1590
|
-
|
|
1870
|
+
+ (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver {
|
|
1591
1871
|
// Temporarily store the non-serializable session for later
|
|
1592
1872
|
NSString *sessionHash = [NSString stringWithFormat:@"%@", @([resolver.session hash])];
|
|
1593
1873
|
|
|
@@ -1599,7 +1879,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1599
1879
|
}
|
|
1600
1880
|
#endif
|
|
1601
1881
|
|
|
1602
|
-
|
|
1882
|
+
+ (void)promiseRejectAuthException:(RCTPromiseRejectBlock)reject error:(NSError *)error {
|
|
1603
1883
|
NSDictionary *jsError = [self getJSError:error];
|
|
1604
1884
|
|
|
1605
1885
|
[RNFBSharedUtils
|
|
@@ -1613,7 +1893,8 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1613
1893
|
}];
|
|
1614
1894
|
}
|
|
1615
1895
|
|
|
1616
|
-
|
|
1896
|
+
+ (NSDictionary *)getJSError:(NSError *)error {
|
|
1897
|
+
[self initializeSharedStateOnce];
|
|
1617
1898
|
NSString *code = AuthErrorCode_toJSErrorCode[error.code];
|
|
1618
1899
|
NSString *message = [error localizedDescription];
|
|
1619
1900
|
NSString *nativeErrorMessage = [error localizedDescription];
|
|
@@ -1718,7 +1999,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1718
1999
|
};
|
|
1719
2000
|
}
|
|
1720
2001
|
|
|
1721
|
-
|
|
2002
|
+
+ (void)promiseWithUser:(RCTPromiseResolveBlock)resolve
|
|
1722
2003
|
rejecter:(RCTPromiseRejectBlock)reject
|
|
1723
2004
|
user:(FIRUser *)user {
|
|
1724
2005
|
if (user) {
|
|
@@ -1729,7 +2010,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1729
2010
|
}
|
|
1730
2011
|
}
|
|
1731
2012
|
|
|
1732
|
-
|
|
2013
|
+
+ (void)promiseWithAuthResult:(RCTPromiseResolveBlock)resolve
|
|
1733
2014
|
rejecter:(RCTPromiseRejectBlock)reject
|
|
1734
2015
|
authResult:(FIRAuthDataResult *)authResult {
|
|
1735
2016
|
if (authResult && authResult.user) {
|
|
@@ -1770,7 +2051,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1770
2051
|
}
|
|
1771
2052
|
}
|
|
1772
2053
|
|
|
1773
|
-
|
|
2054
|
+
+ (NSArray<NSObject *> *)convertProviderData:(NSArray<id<FIRUserInfo>> *)providerData {
|
|
1774
2055
|
NSMutableArray *output = [NSMutableArray array];
|
|
1775
2056
|
|
|
1776
2057
|
for (id<FIRUserInfo> userInfo in providerData) {
|
|
@@ -1806,7 +2087,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1806
2087
|
return output;
|
|
1807
2088
|
}
|
|
1808
2089
|
|
|
1809
|
-
|
|
2090
|
+
+ (NSDictionary *)authConstantsDictionary {
|
|
1810
2091
|
NSDictionary *firebaseApps = [FIRApp allApps];
|
|
1811
2092
|
NSMutableDictionary *constants = [NSMutableDictionary new];
|
|
1812
2093
|
NSMutableDictionary *appLanguage = [NSMutableDictionary new];
|
|
@@ -1833,7 +2114,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1833
2114
|
return constants;
|
|
1834
2115
|
}
|
|
1835
2116
|
|
|
1836
|
-
|
|
2117
|
+
+ (NSDictionary *)firebaseUserToDict:(FIRUser *)user {
|
|
1837
2118
|
return @{
|
|
1838
2119
|
keyDisplayName : user.displayName ? (id)user.displayName : [NSNull null],
|
|
1839
2120
|
keyEmail : user.email ? (id)user.email : [NSNull null],
|
|
@@ -1862,7 +2143,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1862
2143
|
}
|
|
1863
2144
|
|
|
1864
2145
|
#if TARGET_OS_IOS
|
|
1865
|
-
|
|
2146
|
+
+ (NSArray<NSMutableDictionary *> *)convertMultiFactorData:(NSArray<FIRMultiFactorInfo *> *)hints {
|
|
1866
2147
|
NSMutableArray *enrolledFactors = [NSMutableArray array];
|
|
1867
2148
|
|
|
1868
2149
|
for (FIRMultiFactorInfo *hint in hints) {
|
|
@@ -1889,7 +2170,8 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1889
2170
|
}
|
|
1890
2171
|
#endif
|
|
1891
2172
|
|
|
1892
|
-
|
|
2173
|
+
+ (NSDictionary *)authCredentialToDict:(FIRAuthCredential *)authCredential {
|
|
2174
|
+
[self initializeSharedStateOnce];
|
|
1893
2175
|
NSString *authCredentialHash = [NSString stringWithFormat:@"%@", @([authCredential hash])];
|
|
1894
2176
|
|
|
1895
2177
|
// Temporarily store the non-serializable credential for later
|
|
@@ -1902,7 +2184,7 @@ RCT_EXPORT_METHOD(useEmulator
|
|
|
1902
2184
|
};
|
|
1903
2185
|
}
|
|
1904
2186
|
|
|
1905
|
-
|
|
2187
|
+
+ (FIRActionCodeSettings *)buildActionCodeSettings:(NSDictionary *)actionCodeSettings {
|
|
1906
2188
|
FIRActionCodeSettings *settings = [[FIRActionCodeSettings alloc] init];
|
|
1907
2189
|
|
|
1908
2190
|
NSString *url = actionCodeSettings[keyUrl];
|