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()
|
email = normal_email(request.form.get("email", "")); user = User.query.filter_by(email=email, is_active_account=True).first()
|
||||||
if user:
|
if user:
|
||||||
session.update(pending_email=email, pending_user_id=user.id, pending_purpose="reset")
|
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")
|
flash("若该邮箱已注册,验证码将发送至邮箱。", "info")
|
||||||
return redirect(url_for("main.login"))
|
return redirect(url_for("main.login"))
|
||||||
|
|
||||||
|
|||||||
@@ -305,6 +305,7 @@ class EmailAuthenticationTest(unittest.TestCase):
|
|||||||
client = app.test_client()
|
client = app.test_client()
|
||||||
response = self.form(client, "/forgot-password", email="alice@example.com")
|
response = self.form(client, "/forgot-password", email="alice@example.com")
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 302)
|
||||||
|
self.assertEqual(response.location, "/verify/reset")
|
||||||
verify = client.get("/verify/reset")
|
verify = client.get("/verify/reset")
|
||||||
response = client.post("/verify/reset", data={"csrf_token": self.csrf(verify), "code": "123456"})
|
response = client.post("/verify/reset", data={"csrf_token": self.csrf(verify), "code": "123456"})
|
||||||
self.assertEqual(response.location, "/set-password")
|
self.assertEqual(response.location, "/set-password")
|
||||||
|
|||||||
Reference in New Issue
Block a user