Repository navigation
Commit d533029
committed
fix(plugin-auth): 2FA verification echoes the session it installed (#10701)
`/two-factor/verify-totp` answered 200 with two credentials that disagreed:
the `Set-Cookie` named the caller's rotated session, while the JSON `token`
named the session row the same request had just deleted.
better-auth's `verifyTwoFactor` resolves the caller's session once at entry
and closes over it, so `valid(ctx)` echoes the PRE-rotation token on the
enrolment lane, where the route rotates the session before answering.
Because `bearer()` overwrites the request's session cookie with whatever the
Authorization header carries, a client that stored the echoed token did not
merely fail to authenticate with it -- presenting it destroyed the still-valid
rotated cookie and dropped the request to anonymous.
The echoed value is now read back out of the response's own session cookie.
Shape and meaning of the field are unchanged; only the value moves, from a
deleted row to the live one. Resolver precedence is untouched, and two pins
hold that line: anonymous is still refused, and a bogus bearer still overrides
a valid cookie and still fails closed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PnJHU45vPJj5UQrxe946Bx1 parent 376b3dc commit d533029
4 files changed
Lines changed: 554 additions & 0 deletions
File tree
- .changeset
- packages/plugins/plugin-auth/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| |||
1704 | 1705 | | |
1705 | 1706 | | |
1706 | 1707 | | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
| 1714 | + | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
1707 | 1719 | | |
1708 | 1720 | | |
1709 | 1721 | | |
| |||
0 commit comments