Skip to content

Add interstitial pages for admin email confirmation workflows#1278

Merged
maebeale merged 2 commits intomainfrom
maebeale/email-confirm-interstitials
Mar 1, 2026
Merged

Add interstitial pages for admin email confirmation workflows#1278
maebeale merged 2 commits intomainfrom
maebeale/email-confirm-interstitials

Conversation

@maebeale
Copy link
Collaborator

@maebeale maebeale commented Mar 1, 2026

What is the goal of this PR and why is this important?

  • When admins change a user's email, Devise was automatically sending a reconfirmation email with no way to opt out
  • When admins clicked "Manually confirm email", there was no guidance that resending the confirmation email is usually the better option
  • This adds interstitial pages that give admins control over the email confirmation workflow

How did you approach the change?

  • Email change interstitial: After an admin changes a user's email, suppress Devise's auto-email and redirect to an interstitial with a checkbox to optionally send the confirmation email
  • Manual confirm interstitial: Replace the inline "Manually confirm email" button with a link to an interstitial that recommends resending the confirmation email first, with manual confirm as a secondary option
  • Service objects: ProcessEmailChange and ProcessEmailManualConfirm encapsulate the business logic for each flow
  • UI improvements: Move pending email banner into the identity header row on both show and edit pages; rename buttons for clarity ("Send reset password email", "Resend invite email")
  • Specs: Request specs for all 4 new endpoints + service object specs

Anything else to add?

  • Follows the same interstitial pattern used for event registration creation
  • The skip_confirmation_notification! call in the update action is the key Devise hook that suppresses the automatic email

🤖 Generated with Claude Code

maebeale and others added 2 commits March 1, 2026 08:15
When an admin changes a user's email, suppress the automatic Devise
reconfirmation email and show an interstitial page asking whether to
send the confirmation email. When clicking "Confirm email" on the edit
page, show an interstitial recommending resend over manual confirm.

- Add confirm_email_change and confirm_email_manual interstitial flows
- Move pending email banner into identity header on show and edit pages
- Replace inline confirm button with link to interstitial page
- Rename button labels for clarity (Send reset password email, etc.)
- Add ProcessEmailChange and ProcessEmailManualConfirm service objects
- Add request and service specs for new endpoints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace non-existent :confirmed trait with default factory (already
  sets confirmed_at)
- Register new interstitial views in page_bg_class alignment spec

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@maebeale maebeale force-pushed the maebeale/email-confirm-interstitials branch from 954820c to e6609d3 Compare March 1, 2026 13:16
@maebeale maebeale merged commit 492804b into main Mar 1, 2026
3 checks passed
@maebeale maebeale deleted the maebeale/email-confirm-interstitials branch March 1, 2026 13:26
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