Do not update user email if there is an error when sending the validation link to the new email
This commit is contained in:
parent
45f4e2d169
commit
3ab168fd67
10 changed files with 103 additions and 68 deletions
|
|
@ -474,9 +474,6 @@ pub async fn ask_reset_password_post(
|
|||
email,
|
||||
message_email: match error {
|
||||
AskResetPasswordError::InvalidEmail => context.tr.t(Sentence::InvalidEmail),
|
||||
_ => "",
|
||||
},
|
||||
message: match error {
|
||||
AskResetPasswordError::EmailAlreadyReset => {
|
||||
context.tr.t(Sentence::AskResetEmailAlreadyResetError)
|
||||
}
|
||||
|
|
@ -484,6 +481,9 @@ pub async fn ask_reset_password_post(
|
|||
AskResetPasswordError::UnableSendEmail(_) => {
|
||||
context.tr.t(Sentence::UnableToSendResetEmail)
|
||||
}
|
||||
_ => "",
|
||||
},
|
||||
message: match error {
|
||||
AskResetPasswordError::DatabaseError(_) => {
|
||||
context.tr.t(Sentence::DatabaseError)
|
||||
}
|
||||
|
|
@ -853,7 +853,12 @@ pub async fn edit_user_post(
|
|||
Ok(db::user::UpdateUserResult::EmailAlreadyTaken) => {
|
||||
return error_response(ProfileUpdateError::EmailAlreadyTaken, &form_data, context);
|
||||
}
|
||||
Ok(db::user::UpdateUserResult::UserUpdatedWaitingForRevalidation(token)) => {
|
||||
Ok(db::user::UpdateUserResult::UserUpdatedWaitingForRevalidation(
|
||||
token,
|
||||
old_email,
|
||||
old_token,
|
||||
old_token_datetime,
|
||||
)) => {
|
||||
let url = utils::get_url_from_host(&host);
|
||||
let email = form_data.email.clone();
|
||||
match email_service
|
||||
|
|
@ -874,6 +879,22 @@ pub async fn edit_user_post(
|
|||
message = context.tr.t(Sentence::ProfileEmailSent);
|
||||
}
|
||||
Err(error) => {
|
||||
// If the email can't be set we revert the changes about email and token.
|
||||
if let Err(error) = connection
|
||||
.update_user_email_and_token(
|
||||
user.id,
|
||||
&old_email,
|
||||
old_token.as_deref(),
|
||||
&old_token_datetime,
|
||||
)
|
||||
.await
|
||||
{
|
||||
error!(
|
||||
"Unable to set email and token: (email={}): {}",
|
||||
email, error
|
||||
);
|
||||
}
|
||||
|
||||
return error_response(
|
||||
ProfileUpdateError::UnableToSendEmail(error),
|
||||
&form_data,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue