Skip to content

Add email verification nudge component to dashboard - #34

Merged
Andreas-Froyland merged 1 commit into
mainfrom
claude/complete-todo-feature-b2fkj
Feb 16, 2026
Merged

Andreas-Froyland merged 1 commit into
mainfrom
claude/complete-todo-feature-b2fkj

Conversation

@Andreas-Froyland

Copy link
Copy Markdown
Member

Summary

This PR adds an email verification nudge component that prompts users to verify their email address before accessing all features. The nudge is displayed in the dashboard layout and provides a seamless way for users to resend verification emails.

Key Changes

  • New Component: Created EmailVerificationNudge.vue component that:

    • Displays a dismissible warning banner when user's email is not verified
    • Shows the user's email address in the nudge message
    • Provides a "Resend email" button to trigger verification email resend
    • Displays success/error messages with appropriate styling
    • Includes loading state during email sending
    • Automatically hides when email is verified or user dismisses it
  • Dashboard Layout: Integrated the new nudge component into the dashboard layout, positioned at the top of the main content area

  • Task Completion: Removed "Email verification nudge" from TODO.md as this feature is now implemented

Implementation Details

  • Uses the existing authClient to fetch session data and send verification emails
  • Leverages Vue's reactivity system to watch for session changes
  • Implements proper error handling with user-friendly messages
  • Styled with Tailwind CSS with dark mode support using yellow warning colors
  • Component is only mounted on client-side to avoid hydration issues
  • Includes accessibility features (aria-label for dismiss button)

https://claude.ai/code/session_01TWXA6GHDVkZLT1hfDwVoEB

Shows a dismissible yellow banner on all dashboard pages when the
logged-in user's email is not verified. Includes a "Resend email"
button that calls authClient.sendVerificationEmail() with success
and error feedback. Converts dashboard layout to Options API.

https://claude.ai/code/session_01TWXA6GHDVkZLT1hfDwVoEB
@vercel

vercel Bot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
veerify Ready Ready Preview, Comment Feb 16, 2026 2:34pm

@Andreas-Froyland
Andreas-Froyland merged commit 0b5b545 into main Feb 16, 2026
8 of 11 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8204282b25

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +99 to +103
await authClient.sendVerificationEmail({
email: this.userEmail,
callbackURL: '/dashboard',
})
this.successMessage = 'Verification email sent!'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Check sendVerificationEmail result before showing success

authClient.sendVerificationEmail does not throw on API failures by default (the client in lib/auth-client.ts does not enable fetchOptions.throw), so this try/catch path marks the action as successful even when the backend returns an error (for example rate limiting or mail delivery failure). In that case successMessage is set and the resend button is hidden (v-if="!successMessage"), which misleads users and prevents retrying from the banner.

Useful? React with 👍 / 👎.

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.

2 participants