@@ -388,6 +388,46 @@ export const resetPassword = (dispatch, firebase, email) => {
388388 } )
389389}
390390
391+ /**
392+ * @description Confirm the password reset with code and password
393+ * @param {Function } dispatch - Action dispatch function
394+ * @param {Object } firebase - Internal firebase object
395+ * @param {String } code - Email confirmation reset code
396+ * @param {String } password - Password to set it to
397+ * @return {Promise }
398+ * @private
399+ */
400+ export const confirmPasswordReset = ( dispatch , firebase , code , password ) => {
401+ dispatchLoginError ( dispatch , null )
402+ return firebase . auth ( )
403+ . confirmPasswordReset ( code , password )
404+ . catch ( ( err ) => {
405+ if ( err ) {
406+ switch ( err . code ) {
407+ case 'auth/expired-action-code' :
408+ dispatchLoginError ( dispatch , new Error ( 'The action code has expired.' ) )
409+ break
410+ case 'auth/invalid-action-code' :
411+ dispatchLoginError ( dispatch , new Error ( 'The action code is invalid.' ) )
412+ break
413+ case 'auth/user-disabled' :
414+ dispatchLoginError ( dispatch , new Error ( 'The user is disabled.' ) )
415+ break
416+ case 'auth/user-not-found' :
417+ dispatchLoginError ( dispatch , new Error ( 'The user is not found.' ) )
418+ break
419+ case 'auth/weak-password' :
420+ dispatchLoginError ( dispatch , new Error ( 'The password is not strong enough.' ) )
421+ break
422+ default :
423+ dispatchLoginError ( dispatch , err )
424+ }
425+ return Promise . reject ( err )
426+ }
427+ } )
428+ }
429+
430+
391431export default {
392432 dispatchLoginError,
393433 dispatchUnauthorizedError,
@@ -399,5 +439,6 @@ export default {
399439 login,
400440 logout,
401441 createUser,
402- resetPassword
442+ resetPassword,
443+ confirmPasswordReset
403444}
0 commit comments