Skip to content

wip#20533

Draft
dschom wants to merge 2 commits into
mainfrom
FXA-13627
Draft

wip#20533
dschom wants to merge 2 commits into
mainfrom
FXA-13627

Conversation

@dschom
Copy link
Copy Markdown
Contributor

@dschom dschom commented May 6, 2026

Because

This pull request

Issue that this pull request solves

Closes: FXA-13627

Checklist

Put an x in the boxes that apply

  • My commit is GPG signed.
  • If applicable, I have modified or added tests which pass locally.
  • I have added necessary documentation (if appropriate).
  • I have verified that my changes render correctly in RTL (if appropriate).
  • I have manually reviewed all AI generated code.

How to review (Optional)

  • Key files/areas to focus on:
  • Suggested review order:
  • Risky or complex parts:

Screenshots (Optional)

Please attach the screenshots of the changes made in case of change in user interface.

Other information (Optional)

Any other information that is important to this pull request.

@dschom dschom force-pushed the FXA-13627 branch 2 times, most recently from 3caaffb to 8fca746 Compare May 7, 2026 21:32
…s and session reauths

Because:
- v1 password stretching salts using the account's original signup
  email, which can differ from the user's current primary. Clients that
  used the typed/current primary computed the wrong authPW on the first
  try, forcing email-case retry logic and brittle lookahead in the
  password-change and reauth flows.

This commit:
- Adds GET /session/original-account-email returning the account's
  signup email for the authenticated session, with swagger docs.
- Adds AuthClient.fetchOriginalAccountEmail and uses it in
  sessionReauth, passwordChange, and passwordChangeWithAuthPW so v1
  derivations match the stored verifier on the first attempt.
- Threads originalLoginEmail through SessionReauthOptions so callers
  that already fetched the email (e.g. passwordChangeWithAuthPW) avoid
  a redundant round-trip.
- Updates auth-server route, password.ts, and remote tests to the new
  flow; renames the sessionReauth parameter email -> primaryEmail to
  disambiguate from the derivation email.
- Replaces a Sentry.captureMessage with captureException(err, { tags })
  on the v2-upgrade failure path so stacks are preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…st-primary-change reauths

Because:
- After FXA-13627, sessionReauth derives authPW from the immutable signup
  email but was posting the user's current primary as `email` and the
  signup email as `originalLoginEmail`. The server still interprets the
  payload with legacy semantics — `email` is the derivation salt / account
  lookup key (validated against account.email) and `originalLoginEmail`
  is the email the user typed (validated against the current primary in
  checkEmailAddress). The result was that every reauth following a
  change-primary-email step failed with INCORRECT_EMAIL_CASE, breaking
  the change-password flow in settings/changeEmail.spec.ts.

This commit:
- Maps the helper args onto the wire correctly: `email` carries the
  derivation email (signup) and `originalLoginEmail` carries the
  user-typed email (primary), so both server-side checks pass on the
  first attempt with no retry logic needed.
- Renames the local resolved variable to derivationEmail for clarity
  since the option still travels under its legacy name.
- Flips the swapped assertions in the auth-client unit test to match
  the corrected wire format.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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