Commit b47a934
committed
feat(auth)!: node-issued one-time-code token exchange
Pivot the pairing flow from "client mints a token, node approves it" to a
node-issued exchange: the dev server shows a 6-digit code, the browser submits
it, and the node mints and returns the bearer token. The token now travels
down only after the code is verified, and the node owns token generation.
Node side (`devframe/node/auth`): drop the pending-promise machinery
(`PendingAuthRequest`, `setPendingAuth`, `getPendingAuth`, `abortPendingAuth`,
`consumeTempAuthToken`) in favour of two synchronous primitives —
`exchangeTempAuthCode` (verify code → mint + store + trust + return token) and
`verifyAuthToken` (re-auth a stored token on reconnect). The code keeps its
TTL, constant-time compare, and attempt-cap guards.
Client side: stop self-issuing a token. A fresh client connects unpaired and
calls the new `requestTrustWithCode(code)` to exchange the code for a token,
which is persisted and broadcast to sibling tabs. `requestTrustWithToken`
remains for re-auth. The client still announces on connect so the standalone
`auth: false` noop keeps auto-trusting.
The auth wire methods (`devframe:anonymous:auth`, `devframe:auth:exchange`,
`devframe:auth:revoked`) are now declared in the RPC contract types.
BREAKING CHANGE: `devframe/node/auth` no longer exports `PendingAuthRequest`,
`setPendingAuth`, `getPendingAuth`, `abortPendingAuth`, or
`consumeTempAuthToken`. Host adapters register a `devframe:auth:exchange`
handler built on `exchangeTempAuthCode`, and an `devframe:anonymous:auth`
handler built on `verifyAuthToken`, instead of the pending-request dance.1 parent de3b203 commit b47a934
9 files changed
Lines changed: 197 additions & 127 deletions
File tree
- docs/guide
- packages/devframe/src
- client
- node/auth
- types
- tests/__snapshots__/tsnapi/devframe
- node
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | | - | |
| 82 | + | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
85 | 85 | | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
88 | 98 | | |
89 | 99 | | |
90 | 100 | | |
91 | 101 | | |
92 | | - | |
| 102 | + | |
93 | 103 | | |
94 | 104 | | |
95 | 105 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
19 | 21 | | |
20 | 22 | | |
21 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
| 72 | + | |
76 | 73 | | |
| 74 | + | |
77 | 75 | | |
78 | | - | |
| 76 | + | |
79 | 77 | | |
80 | 78 | | |
81 | 79 | | |
82 | 80 | | |
83 | 81 | | |
84 | 82 | | |
85 | 83 | | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
86 | 88 | | |
87 | 89 | | |
88 | 90 | | |
89 | | - | |
| 91 | + | |
90 | 92 | | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
94 | | - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
95 | 100 | | |
96 | 101 | | |
97 | 102 | | |
98 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
99 | 121 | | |
100 | 122 | | |
101 | 123 | | |
102 | | - | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
103 | 129 | | |
104 | 130 | | |
105 | 131 | | |
| |||
129 | 155 | | |
130 | 156 | | |
131 | 157 | | |
| 158 | + | |
132 | 159 | | |
133 | 160 | | |
134 | 161 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | 10 | | |
12 | 11 | | |
13 | 12 | | |
| |||
75 | 74 | | |
76 | 75 | | |
77 | 76 | | |
78 | | - | |
| 77 | + | |
79 | 78 | | |
80 | 79 | | |
81 | 80 | | |
82 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
83 | 89 | | |
84 | 90 | | |
85 | 91 | | |
| |||
118 | 124 | | |
119 | 125 | | |
120 | 126 | | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
121 | 132 | | |
122 | 133 | | |
123 | 134 | | |
124 | 135 | | |
125 | 136 | | |
126 | | - | |
| 137 | + | |
127 | 138 | | |
128 | 139 | | |
129 | | - | |
| 140 | + | |
130 | 141 | | |
131 | 142 | | |
132 | 143 | | |
133 | 144 | | |
134 | 145 | | |
135 | | - | |
136 | | - | |
137 | 146 | | |
138 | 147 | | |
139 | | - | |
| 148 | + | |
140 | 149 | | |
141 | | - | |
| 150 | + | |
142 | 151 | | |
143 | 152 | | |
144 | 153 | | |
145 | 154 | | |
146 | | - | |
147 | | - | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
148 | 159 | | |
149 | | - | |
150 | | - | |
151 | | - | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
152 | 166 | | |
153 | 167 | | |
154 | 168 | | |
| |||
223 | 237 | | |
224 | 238 | | |
225 | 239 | | |
226 | | - | |
| 240 | + | |
227 | 241 | | |
228 | 242 | | |
229 | 243 | | |
| |||
283 | 297 | | |
284 | 298 | | |
285 | 299 | | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
286 | 307 | | |
287 | 308 | | |
288 | 309 | | |
| |||
293 | 314 | | |
294 | 315 | | |
295 | 316 | | |
296 | | - | |
297 | | - | |
| 317 | + | |
298 | 318 | | |
299 | 319 | | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
300 | 333 | | |
301 | 334 | | |
302 | 335 | | |
| |||
313 | 346 | | |
314 | 347 | | |
315 | 348 | | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
321 | 353 | | |
322 | 354 | | |
323 | 355 | | |
324 | 356 | | |
325 | 357 | | |
326 | | - | |
327 | 358 | | |
328 | 359 | | |
329 | 360 | | |
0 commit comments