diff --git a/app/routes.py b/app/routes.py index 1819d46..10d2fcd 100644 --- a/app/routes.py +++ b/app/routes.py @@ -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")) diff --git a/tests/test_auth_registration.py b/tests/test_auth_registration.py index c9fa61d..d0698b8 100644 --- a/tests/test_auth_registration.py +++ b/tests/test_auth_registration.py @@ -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")