Ну, я думаю, что вы хотите, чтобы пользователь ввел старый пароль, просто чтобы проверить, является ли он действительным владельцем учетной записи или нет.
Firebase очень хорошо справляется с этой ситуацией, вам просто нужно вызвать updatePasswordметод на объекте пользователя и передать новый пароль.
const changePassword = async newPassword => {
const user = firebase.auth().currentUser;
try {
await user.updatePassword(newPassword)
console.log('Password Updated!')
} catch (err) {
console.log(err)
}
}
Если в течение последнего времени пользователь вошел в систему, Firebase вернет ошибку - «Эта операция чувствительна и требует недавней аутентификации. Войдите в систему, прежде чем повторять этот запрос. "
Таким образом, вам не нужно проверять старый пароль, как это делает Firebase.
Но если вы просто хотите сделать это за один раз, без необходимости повторного входа пользователя.Для этого также есть способ.
Для объекта пользователя reauthenticateAndRetrieveDataWithCredential
существует метод, вам просто нужно передать объект cred (адрес электронной почты и пароль), и он обновит токен авторизации.
const reauthenticate = currentPassword => {
const user = firebase.auth().currentUser;
const cred = firebase.auth.EmailAuthProvider.credential(
user.email, currentPassword);
return user.reauthenticateAndRetrieveDataWithCredential(cred);
}
В вашем конкретном случае у вас может быть что-то вроде этого
const changePassword = async (oldPassword, newPassword) => {
const user = firebase.auth().currentUser
try {
// reauthenticating
await this.reauthenticate(oldPassword)
// updating password
await user.updatePassword(newPassword)
} catch(err){
console.log(err)
}
}
Узнайте больше о фактах пожарной базы - https://firebase.google.com/docs/auth/web/manage-users#re-authenticate_a_user
Надеюсь, это поможет