fix: continue password reset after email request
This commit is contained in:
+7
-1
@@ -452,7 +452,13 @@ def forgot_password():
|
||||
email = normal_email(request.form.get("email", "")); user = User.query.filter_by(email=email, is_active_account=True).first()
|
||||
if user:
|
||||
session.update(pending_email=email, pending_user_id=user.id, pending_purpose="reset")
|
||||
issue_email_code(email, "reset")
|
||||
reason = issue_email_code(email, "reset")
|
||||
if reason in {None, "resend_wait"}:
|
||||
if reason == "resend_wait":
|
||||
flash("邮箱验证码已发送,请直接输入验证码继续。", "info")
|
||||
return redirect(url_for("main.verify_email", purpose="reset"))
|
||||
flash(email_code_issue_message(reason), "error")
|
||||
return redirect(url_for("main.forgot_password"))
|
||||
flash("若该邮箱已注册,验证码将发送至邮箱。", "info")
|
||||
return redirect(url_for("main.login"))
|
||||
|
||||
|
||||
@@ -305,6 +305,7 @@ class EmailAuthenticationTest(unittest.TestCase):
|
||||
client = app.test_client()
|
||||
response = self.form(client, "/forgot-password", email="alice@example.com")
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(response.location, "/verify/reset")
|
||||
verify = client.get("/verify/reset")
|
||||
response = client.post("/verify/reset", data={"csrf_token": self.csrf(verify), "code": "123456"})
|
||||
self.assertEqual(response.location, "/set-password")
|
||||
|
||||
Reference in New Issue
Block a user