Open
Conversation
calebbourg
approved these changes
Apr 3, 2026
jhodapp
requested changes
Apr 4, 2026
Member
jhodapp
left a comment
There was a problem hiding this comment.
@rnambaale This looks amazing, thank you!
Can we change it so that if a magic link times out, the message says to contact your coach instead of administrator?
Also I'm curious if we could display the status of the first-time-sign-in in the Members page for the user's coach. So when a coach adds a new member to their organization, the status for the user is pending. And if the magic link times out, the status for the user could be invitation expired and offer a button to the coach to resend the welcome email with a new magic link.
If this is too much to add to this PR, I'd be ok with a follow-on one as well with this PR being phase 1.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Implements the magic link account setup page where users land after clicking a setup link from their email. The page validates the magic link token, then presents a form to set their initial account password.
Backend support: refactor-group/refactor-platform-rs#273
GitHub Issue: [Resolves] #350
Changes
/setup/[token]route with token validation on page load and password setup formMagicLinkApimodule withvalidate()andcompleteSetup()endpoints (unauthenticated, plain axios)AccountSetupFormcomponent following existing password form patterns (min 8 chars, confirm match)SetupPageStatediscriminated union to manage page lifecycle (validating → ready → submitting → success / error)Screenshots / Videos Showing UI Changes (if applicable)
Screenshots:
Testing Strategy
/setup/<valid-token>— should show spinner, then password form with user's email/magic-link/complete-setup, success screen with "Sign In" link/setup/<invalid-token>— should show error message after failed validation/setup/<expired-token>— should show "link expired" error/setup/<used-token>— should show "already set up" errorConcerns
GET /magic-link/validateandPOST /magic-link/complete-setup) must be implemented and deployed before this feature is functional (see Implements magic login links refactor-platform-rs#273)