Skip to content

Let users resend the confirmation email#35

Merged
kcdragon merged 1 commit into
mainfrom
resend-confirmation-email
Jun 12, 2026
Merged

Let users resend the confirmation email#35
kcdragon merged 1 commit into
mainfrom
resend-confirmation-email

Conversation

@kcdragon

Copy link
Copy Markdown
Collaborator

Adds a recovery path for users who lose or expire their confirmation email — previously they could neither sign in (blocked until confirmed) nor re-register (emails are globally unique). A new unauthenticated page at /email_confirmation/new, plus a "Resend confirmation" link on the sign-in page, lets them enter their email to re-send the confirmation link, mirroring the existing password-reset flow. Only unconfirmed accounts are actually mailed, and the action always shows the same generic notice so it never reveals whether an email exists or is already confirmed. It reuses the existing RegistrationMailer.confirmation and the on-demand email_confirmation token, so no model or schema changes were needed. Controller tests cover the form, the unconfirmed send, and the two no-leak cases (already-confirmed and unknown email).

🤖 Generated with Claude Code

New users who lose or expire their confirmation email had no recovery
path: they cannot sign in until confirmed and cannot re-register because
emails are globally unique. Add a dedicated unauthenticated page (and a
link from the sign-in page) where they enter their email to re-send the
confirmation link, mirroring the existing password-reset flow.

Only unconfirmed accounts are sent mail, and the action always shows the
same generic notice so it never reveals whether an email exists or is
already confirmed. Reuses the existing RegistrationMailer.confirmation
and the on-demand email_confirmation token.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kcdragon kcdragon merged commit 6428a38 into main Jun 12, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant