diff --git a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java index c223144c..259eeb8a 100644 --- a/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java +++ b/android/src/main/java/io/invertase/firebase/auth/RNFirebaseAuth.java @@ -502,6 +502,31 @@ public class RNFirebaseAuth extends ReactContextBaseJavaModule { } } + /** + * + * @param code + * @param newPassword + * @param promise + */ + @ReactMethod + public void confirmPasswordReset(final String code, final String newPassword, final Promise promise) { + Log.d(TAG, "confirmPasswordReset"); + mAuth.confirmPasswordReset(code, newPassword) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Log.d(TAG, "confirmPasswordReset:onComplete:success"); + promiseNoUser(promise, false); + } else { + Exception exception = task.getException(); + Log.e(TAG, "confirmPasswordReset:onComplete:failure", exception); + promiseRejectAuthException(promise, exception); + } + } + }); + } + /** * link * diff --git a/ios/RNFirebase/auth/RNFirebaseAuth.m b/ios/RNFirebase/auth/RNFirebaseAuth.m index 520707d2..c2469e13 100644 --- a/ios/RNFirebase/auth/RNFirebaseAuth.m +++ b/ios/RNFirebase/auth/RNFirebaseAuth.m @@ -321,6 +321,25 @@ RCT_EXPORT_METHOD(signInWithCredential:(NSString *)provider token:(NSString *)au }]; } +/** + confirmPasswordReset + + @param NSString code + @param NSString newPassword + @param RCTPromiseResolveBlock resolve + @param RCTPromiseRejectBlock reject + @return + */ +RCT_EXPORT_METHOD(confirmPasswordReset:(NSString *)code newPassword:(NSString *)newPassword resolver:(RCTPromiseResolveBlock) resolve rejecter:(RCTPromiseRejectBlock) reject) { + [[FIRAuth auth] confirmPasswordResetWithCode:code newPassword:newPassword completion:^(NSError *_Nullable error) { + if (error) { + [self promiseRejectAuthException:reject error:error]; + } else { + [self promiseNoUser:resolve rejecter:reject isError:NO]; + } + }]; +} + /** sendPasswordResetEmail diff --git a/lib/modules/auth/index.js b/lib/modules/auth/index.js index e9621e30..06447f5a 100644 --- a/lib/modules/auth/index.js +++ b/lib/modules/auth/index.js @@ -153,6 +153,19 @@ export default class Auth extends Base { return FirebaseAuth.sendPasswordResetEmail(email); } + /** + * Completes the password reset process, given a confirmation code and new password. + * + * @link https://firebase.google.com/docs/reference/js/firebase.auth.Auth#confirmPasswordReset + * @param code + * @param newPassword + * @return {Promise.} + */ + confirmPasswordReset(code: string, newPassword: string): Promise { + return FirebaseAuth.confirmPasswordReset(code, newPassword); + } + + /** * Get the currently signed in user * @return {Promise}