Tell the user if the reset password token is expired.

This commit is contained in:
Greg Burri 2024-11-09 18:58:39 +01:00
parent ed979719b5
commit 37f6de7a89
4 changed files with 34 additions and 25 deletions

View file

@ -574,15 +574,15 @@ pub async fn ask_reset_password_post(
)
.await
{
Ok(db::GetTokenResetPassword::PasswordAlreadyReset) => error_response(
Ok(db::GetTokenResetPasswordResult::PasswordAlreadyReset) => error_response(
AskResetPasswordError::EmailAlreadyReset,
&form_data.email,
user,
),
Ok(db::GetTokenResetPassword::EmailUnknown) => {
Ok(db::GetTokenResetPasswordResult::EmailUnknown) => {
error_response(AskResetPasswordError::EmailUnknown, &form_data.email, user)
}
Ok(db::GetTokenResetPassword::Ok(token)) => {
Ok(db::GetTokenResetPasswordResult::Ok(token)) => {
let url = utils::get_url_from_host(&host);
match email::send_email(
&form_data.email,
@ -663,6 +663,7 @@ pub struct ResetPasswordForm {
enum ResetPasswordError {
PasswordsNotEqual,
InvalidPassword,
TokenExpired,
DatabaseError,
}
@ -691,6 +692,7 @@ pub async fn reset_password_post(
}
.to_string(),
message: match error {
ResetPasswordError::TokenExpired => "Token expired, try to reset password again",
ResetPasswordError::DatabaseError => "Database error",
_ => "",
}
@ -717,11 +719,14 @@ pub async fn reset_password_post(
)
.await
{
Ok(_) => Ok(MessageTemplate {
Ok(db::ResetPasswordResult::Ok) => Ok(MessageTemplate {
user,
message: "Your password has been reset",
}
.into_response()),
Ok(db::ResetPasswordResult::ResetTokenExpired) => {
error_response(ResetPasswordError::TokenExpired, &form_data, user)
}
Err(_) => error_response(ResetPasswordError::DatabaseError, &form_data, user),
}
}