Skip to content

Commit 729d981

Browse files
3rditxusheng6claude
authored
Remind the user to check their spam after requesting password reset +… (#136)
* Remind the user to check their spam after requesting password reset + FaQ details * Add landing page after requesting password reset Instead of showing a flash message on the same form page, redirect users to a dedicated landing page with clear instructions on what to do next, including checking spam folder and contact info. Closes #102 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Xusheng <xusheng@vector35.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent faeb677 commit 729d981

3 files changed

Lines changed: 56 additions & 9 deletions

File tree

app/controllers/password_reset.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,11 @@ def forgot_password_post():
5050
flash('Password reset is currently unavailable. Please contact support.', FLASH_ERROR)
5151
return render_template('password_reset/forgot.html')
5252

53-
# Always show success message to prevent email enumeration
54-
success_message = 'If an account with that email exists, a password reset link has been sent.'
55-
5653
# Check per-email quota first (prevents spam to single address)
5754
# We check this before user lookup to prevent timing-based enumeration
5855
if email_quota_exceeded(email):
59-
# Don't reveal rate limiting - show same success message
60-
flash(success_message, FLASH_SUCCESS)
61-
return render_template('password_reset/forgot.html')
56+
# Don't reveal rate limiting - show same success page
57+
return render_template('password_reset/email_sent.html')
6258

6359
try:
6460
# Check if user exists
@@ -103,8 +99,8 @@ def forgot_password_post():
10399
except Exception as e:
104100
print(f"Error during password reset request: {e}")
105101

106-
flash(success_message, FLASH_SUCCESS)
107-
return render_template('password_reset/forgot.html')
102+
# Show landing page with instructions (prevents email enumeration)
103+
return render_template('password_reset/email_sent.html')
108104

109105

110106
@password_reset_bp.route('/reset-password/<token>', methods=['GET'])

templates/faq/faq.html

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,19 @@ <h3 id="reset-password">How do I reset my password? <a href="#reset-password" cl
142142
<p>If you do not remember your current password: use the <a href="/forgot-password">Forgot Password</a> page to receive a reset link via email.</p>
143143
<p>If the automated reset does not work, please email crackmesone@gmail.com from the email address you used when you registered your account for assistance.</p>
144144
<div class="divider"></div>
145+
<h3 id="reset-email-not-received">I didn't receive the password reset email. <a href="#reset-email-not-received" class="anchor-link">#</a></h3>
146+
<p>If you requested a password reset but didn't receive the email, please check the following:</p>
147+
<ul>
148+
<li><b>Check your spam/junk folder:</b> Password reset emails sometimes get filtered as spam. Look in your spam or junk folder for an email from crackmes.one.</li>
149+
<li><b>Mark as "Not Spam":</b> If you find our email in spam, please mark it as "Not Spam" or move it to your inbox. This helps train your email provider to deliver our emails correctly in the future and improves our email server's reputation.</li>
150+
<li><b>Add us to your contacts:</b> Adding crackmesone@gmail.com to your contacts can help prevent future emails from being marked as spam.</li>
151+
<li><b>Wait a few minutes:</b> Email delivery can sometimes be delayed. Wait 5-10 minutes before requesting another reset.</li>
152+
<li><b>Check the correct email address:</b> Make sure you entered the same email address you used when registering your account.</li>
153+
</ul>
154+
<p>If you've tried all of the above and still haven't received the email, please contact us at crackmesone@gmail.com for assistance.</p>
155+
<div class="divider"></div>
145156
<h3 id="delete-account">How do I delete my account? <a href="#delete-account" class="anchor-link">#</a></h3>
146-
<p>Please to email us at crackmesone@gmail.com to request account deletion.</p>
157+
<p>Please email us at crackmesone@gmail.com to request account deletion.</p>
147158
<div class="divider"></div>
148159
<h3 id="discord-verify">I cannot speak or see most channels on Discord. <a href="#discord-verify" class="anchor-link">#</a></h3>
149160
<p>If you cannot speak or see most of the channels on our Discord server, this is because you have not verified your account yet. Please check the <b>#verify</b> channel and follow the verification steps.</p>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{% extends "base.html" %}
2+
{% block title %}Password Reset Requested{% endblock %}
3+
{% block page_title %}Password Reset Requested{% endblock %}
4+
{% block head %}{% endblock %}
5+
{% block content %}
6+
7+
<div class="container grid-lg wrapper">
8+
<div class="columns" style="justify-content: center;">
9+
<div class="column col-8 col-xs-12 panel-input">
10+
<h4>Check Your Email</h4>
11+
<p>If an account with that email exists, a password reset link has been sent.</p>
12+
13+
<h5>What to do next:</h5>
14+
<ol>
15+
<li><b>Check your inbox</b> for an email from crackmes.one.</li>
16+
<li><b>Check your spam/junk folder</b> if you don't see it in your inbox. Password reset emails sometimes get filtered as spam.</li>
17+
<li><b>Mark as "Not Spam"</b> if you find our email in spam. This helps train your email provider to deliver our emails correctly in the future.</li>
18+
<li><b>Wait a few minutes</b> if you don't see the email right away. Email delivery can sometimes be delayed.</li>
19+
</ol>
20+
21+
<p>The reset link will expire in 1 hour.</p>
22+
23+
<h5>Still having trouble?</h5>
24+
<ul>
25+
<li>Make sure you entered the same email address you used when registering.</li>
26+
<li>Check the <a href="/faq#reset-email-not-received">FAQ</a> for more troubleshooting tips.</li>
27+
<li>Contact us at <a href="mailto:crackmesone@gmail.com">crackmesone@gmail.com</a> for assistance.</li>
28+
</ul>
29+
30+
<div style="display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1rem;">
31+
<a href="/login" class="btn active">Back to Login</a>
32+
</div>
33+
</div>
34+
</div>
35+
</div>
36+
37+
{% include 'partial/footer.html' %}
38+
39+
{% endblock %}
40+
{% block foot %}{% endblock %}

0 commit comments

Comments
 (0)