aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firebase/Auth/Source/FIRAuth.m
diff options
context:
space:
mode:
Diffstat (limited to 'Firebase/Auth/Source/FIRAuth.m')
-rw-r--r--Firebase/Auth/Source/FIRAuth.m82
1 files changed, 65 insertions, 17 deletions
diff --git a/Firebase/Auth/Source/FIRAuth.m b/Firebase/Auth/Source/FIRAuth.m
index fda84fa..9020d3f 100644
--- a/Firebase/Auth/Source/FIRAuth.m
+++ b/Firebase/Auth/Source/FIRAuth.m
@@ -770,23 +770,10 @@ static NSMutableDictionary *gKeychainServiceNameForAppName;
dispatch_async(FIRAuthGlobalWorkQueue(), ^{
FIRAuthResultCallback decoratedCallback =
[self signInFlowAuthResultCallbackByDecoratingCallback:completion];
- FIRSignUpNewUserRequest *request =
- [[FIRSignUpNewUserRequest alloc] initWithEmail:email
- password:password
- displayName:nil
- requestConfiguration:_requestConfiguration];
- if (![request.password length]) {
- decoratedCallback(nil, [FIRAuthErrorUtils
- weakPasswordErrorWithServerResponseReason:kMissingPasswordReason]);
- return;
- }
- if (![request.email length]) {
- decoratedCallback(nil, [FIRAuthErrorUtils missingEmailErrorWithMessage:nil]);
- return;
- }
- [FIRAuthBackend signUpNewUser:request
- callback:^(FIRSignUpNewUserResponse *_Nullable response,
- NSError *_Nullable error) {
+ [self internalCreateUserWithEmail:email
+ password:password
+ completion:^(FIRSignUpNewUserResponse *_Nullable response,
+ NSError *_Nullable error) {
if (error) {
decoratedCallback(nil, error);
return;
@@ -800,6 +787,40 @@ static NSMutableDictionary *gKeychainServiceNameForAppName;
});
}
+- (void)createUserAndRetrieveDataWithEmail:(NSString *)email
+ password:(NSString *)password
+ completion:(FIRAuthDataResultCallback)completion {
+ dispatch_async(FIRAuthGlobalWorkQueue(), ^{
+ FIRAuthDataResultCallback decoratedCallback =
+ [self signInFlowAuthDataResultCallbackByDecoratingCallback:completion];
+ [self internalCreateUserWithEmail:email
+ password:password
+ completion:^(FIRSignUpNewUserResponse *_Nullable response,
+ NSError *_Nullable error) {
+ if (error) {
+ decoratedCallback(nil, error);
+ return;
+ }
+
+ [self completeSignInWithAccessToken:response.IDToken
+ accessTokenExpirationDate:response.approximateExpirationDate
+ refreshToken:response.refreshToken
+ anonymous:NO
+ callback:^(FIRUser *_Nullable user, NSError *_Nullable error) {
+ FIRAdditionalUserInfo *additionalUserInfo =
+ [[FIRAdditionalUserInfo alloc] initWithProviderID:FIREmailAuthProviderID
+ profile:nil
+ username:nil
+ isNewUser:YES];
+ FIRAuthDataResult *authDataResult =
+ [[FIRAuthDataResult alloc] initWithUser:user
+ additionalUserInfo:additionalUserInfo];
+ decoratedCallback(authDataResult, nil);
+ }];
+ }];
+ });
+}
+
- (void)confirmPasswordResetWithCode:(NSString *)code
newPassword:(NSString *)newPassword
completion:(FIRConfirmPasswordResetCallback)completion {
@@ -1130,6 +1151,33 @@ static NSMutableDictionary *gKeychainServiceNameForAppName;
}
#endif
+/** @fn internalCreateUserWithEmail:password:completion:
+ @brief Makes a backend request attempting to create a new Firebase user given an email address
+ and password.
+ @param email The email address used to create the new Firebase user.
+ @param password The password used to create the new Firebase user.
+ @param completion Optionally; a block which is invoked when the request finishes.
+ */
+- (void)internalCreateUserWithEmail:(NSString *)email
+ password:(NSString *)password
+ completion:(nullable FIRSignupNewUserCallback)completion {
+ FIRSignUpNewUserRequest *request =
+ [[FIRSignUpNewUserRequest alloc] initWithEmail:email
+ password:password
+ displayName:nil
+ requestConfiguration:_requestConfiguration];
+ if (![request.password length]) {
+ completion(nil, [FIRAuthErrorUtils
+ weakPasswordErrorWithServerResponseReason:kMissingPasswordReason]);
+ return;
+ }
+ if (![request.email length]) {
+ completion(nil, [FIRAuthErrorUtils missingEmailErrorWithMessage:nil]);
+ return;
+ }
+ [FIRAuthBackend signUpNewUser:request callback:completion];
+}
+
/** @fn internalSignInAnonymouslyWithCompletion:
@param completion A block which is invoked when the anonymous sign in request completes.
*/