@cellarnode/auth 0.13.3 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -3
- package/dist/auth-store.d.ts.map +1 -1
- package/dist/auth-store.js +130 -0
- package/dist/auth-store.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/dev-sign-in.d.ts +54 -0
- package/dist/react/dev-sign-in.d.ts.map +1 -0
- package/dist/react/dev-sign-in.js +63 -0
- package/dist/react/dev-sign-in.js.map +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +11 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/login-form.d.ts.map +1 -1
- package/dist/react/login-form.js +104 -2
- package/dist/react/login-form.js.map +1 -1
- package/dist/types.d.ts +63 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -34,8 +34,48 @@ const authApi = createAuthApi({ client: authClient, store: authStore });
|
|
|
34
34
|
import { LoginForm, RegisterForm, UnauthorizedPage } from "@cellarnode/auth/react";
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
###
|
|
37
|
+
### Dev sign-in bypass (local development only)
|
|
38
|
+
|
|
39
|
+
`LoginForm` renders an extra "Dev sign-in (skip the code)" control **beside** the
|
|
40
|
+
email form when `import.meta.env.DEV` is true. It calls
|
|
41
|
+
`authStore.devLogin(email)`, which POSTs the backend's `/test/login` and adopts
|
|
42
|
+
the returned JWE through the same path `verifyOtp` uses. The OTP flow is
|
|
43
|
+
unchanged and remains the only path in production builds. There is no env var to
|
|
44
|
+
set on the frontend.
|
|
45
|
+
|
|
46
|
+
What is and is not dropped from a production bundle — the distinction matters,
|
|
47
|
+
so do not compress it:
|
|
48
|
+
|
|
49
|
+
- **Dropped.** The `DevSignInBypass` component and its markup. Vite folds
|
|
50
|
+
`import.meta.env.DEV` to `false`, Rollup removes the branch, and the module
|
|
51
|
+
goes with it. Pinned by `__tests__/dev-bypass-treeshake.test.ts`, which
|
|
52
|
+
bundles the form both ways and greps the output.
|
|
53
|
+
- **Kept.** `authStore.devLogin` and its failure copy, plus the
|
|
54
|
+
`readDevLoginEmail` / `rememberDevLoginEmail` helpers. All are reached from
|
|
55
|
+
live function bodies behind runtime `if` guards, so no bundler can prove them
|
|
56
|
+
unreachable. They are inert — the helpers only run inside the DEV branch, and
|
|
57
|
+
`devLogin` calls a route that is not mounted in production.
|
|
58
|
+
|
|
59
|
+
The security boundary is the **server**, not the bundle. `/test/login` is only
|
|
60
|
+
mounted when `NODE_ENV`/`MODE` is non-production **and**
|
|
61
|
+
`ENABLE_TEST_ENDPOINTS=true`, and every handler re-checks the same predicate.
|
|
62
|
+
When it is off, `/test/login` returns a uniform 404 and `devLogin()` resolves to
|
|
63
|
+
`{ ok: false, reason: "test-endpoints-disabled" }`. That 404 is deliberately
|
|
64
|
+
identical to the "no local account for this address" case, so neither the helper
|
|
65
|
+
nor the UI may present it as a statement about the account.
|
|
66
|
+
|
|
67
|
+
`devLogin()` never rejects; every outcome is a `DevLoginResult`. Callers should
|
|
68
|
+
still wrap it, because `devLogin` is optional on the `AuthStore` interface and a
|
|
69
|
+
custom store may reject.
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const result = await authStore.devLogin?.("producer@example.com");
|
|
73
|
+
if (result?.ok) {
|
|
74
|
+
// session adopted: token set, refresh scheduled, listeners fired
|
|
75
|
+
}
|
|
76
|
+
```
|
|
38
77
|
|
|
78
|
+
### Tailwind CSS Content Scan
|
|
39
79
|
Add this to your CSS file so Tailwind picks up utility classes from the package:
|
|
40
80
|
|
|
41
81
|
```css
|
|
@@ -44,8 +84,14 @@ Add this to your CSS file so Tailwind picks up utility classes from the package:
|
|
|
44
84
|
|
|
45
85
|
## Exports
|
|
46
86
|
|
|
47
|
-
- `@cellarnode/auth` — Core: `createAuthStore`, `createAuthClient`, `createAuthApi`, `validateUserType`, types
|
|
48
|
-
- `@cellarnode/auth/react` — React: `LoginForm`, `RegisterForm`, `UnauthorizedPage`, `SquircleShift`
|
|
87
|
+
- `@cellarnode/auth` — Core: `createAuthStore`, `createAuthClient`, `createAuthApi`, `validateUserType`, `hasEntitlement`, `extractAccessToken`, types (incl. `DevLoginResult`)
|
|
88
|
+
- `@cellarnode/auth/react` — React: `LoginForm`, `RegisterForm`, `UnauthorizedPage`, `SquircleShift`, `InputOTP` (+ `Group` / `Slot` / `Separator`)
|
|
89
|
+
|
|
90
|
+
`DevSignInBypass`, `DEV_LOGIN_EMAIL_STORAGE_KEY`, `readDevLoginEmail` and
|
|
91
|
+
`rememberDevLoginEmail` are **deliberately not exported**. They are internals of
|
|
92
|
+
`LoginForm`'s `import.meta.env.DEV` branch; the gate lives at that one call site,
|
|
93
|
+
and an exported symbol carries no gate — a consumer importing it could render the
|
|
94
|
+
bypass UI, or write a sign-in address to `localStorage`, from a production build.
|
|
49
95
|
|
|
50
96
|
## License
|
|
51
97
|
|
package/dist/auth-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,eAAe,EAOhB,MAAM,YAAY,CAAC;AAyEpB,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAmYlE"}
|
package/dist/auth-store.js
CHANGED
|
@@ -17,6 +17,35 @@ function toIdentity(user) {
|
|
|
17
17
|
entitlements,
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Fallback access-token lifetime, in seconds, when the server omits
|
|
22
|
+
* `expiresIn`. Mirrors the verify-otp adoption path in `auth-api.ts`.
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_ACCESS_TOKEN_TTL = 900;
|
|
25
|
+
/**
|
|
26
|
+
* Developer-facing copy for each `devLogin()` failure (CEL-1364).
|
|
27
|
+
*
|
|
28
|
+
* The 404 message frames the outcome as "the backend gate is off" and nothing
|
|
29
|
+
* else. The backend deliberately returns an identical 404 for "gate off" and
|
|
30
|
+
* "no such user" (T3-1), so any copy that named the account would be both a
|
|
31
|
+
* guess and a weakening of that contract.
|
|
32
|
+
*
|
|
33
|
+
* These strings SHIP in production bundles — they are referenced from
|
|
34
|
+
* `devLogin`'s live body, which no bundler can prove unreachable. The
|
|
35
|
+
* `ENABLE_TEST_ENDPOINTS` mention is therefore public, which is fine: the flag
|
|
36
|
+
* is documented in this package's README and in the backend repo, and knowing
|
|
37
|
+
* its name grants nothing when the route is not mounted. Moving the copy behind
|
|
38
|
+
* the DEV-only React module would eliminate it, but only by taking the
|
|
39
|
+
* ready-to-render `message` off `DevLoginFailure` — a public-API change, not a
|
|
40
|
+
* review fixup.
|
|
41
|
+
*/
|
|
42
|
+
const DEV_LOGIN_MESSAGES = {
|
|
43
|
+
"test-endpoints-disabled": "Dev sign-in unavailable: backend test endpoints are disabled. Set ENABLE_TEST_ENDPOINTS=true on the API and restart it.",
|
|
44
|
+
"rate-limited": "Dev sign-in rate limit hit (5/min). Wait a minute and retry.",
|
|
45
|
+
forbidden: "Dev sign-in rejected: the API requires a fixture secret (TEST_FIXTURE_SECRET is set).",
|
|
46
|
+
network: "Dev sign-in could not reach the API. Is the backend running?",
|
|
47
|
+
"malformed-response": "Dev sign-in succeeded but the API returned no access token.",
|
|
48
|
+
};
|
|
20
49
|
export function createAuthStore(config) {
|
|
21
50
|
const { baseUrl, refreshPath = "/auth/refresh", refreshBuffer = 60 } = config;
|
|
22
51
|
let accessToken = null;
|
|
@@ -235,6 +264,107 @@ export function createAuthStore(config) {
|
|
|
235
264
|
});
|
|
236
265
|
return refreshPromise;
|
|
237
266
|
},
|
|
267
|
+
/**
|
|
268
|
+
* LOCAL-DEV ONLY (CEL-1364) — see the `AuthStore.devLogin` doc comment.
|
|
269
|
+
*
|
|
270
|
+
* Adoption deliberately routes through `store.setAccessToken()` rather than
|
|
271
|
+
* touching `applyToken` / `scheduleRefresh` directly, so there is exactly
|
|
272
|
+
* ONE token-adoption path shared with verify-otp: same identity fetch, same
|
|
273
|
+
* refresh scheduling, same listener fan-out and ordering.
|
|
274
|
+
*/
|
|
275
|
+
async devLogin(email) {
|
|
276
|
+
let res;
|
|
277
|
+
try {
|
|
278
|
+
res = await fetch(`${baseUrl}/test/login`, {
|
|
279
|
+
method: "POST",
|
|
280
|
+
// The route also sets the BFF session + refresh cookies the OTP flow
|
|
281
|
+
// sets; `include` is what lets a subsequent `/auth/refresh` work.
|
|
282
|
+
credentials: "include",
|
|
283
|
+
headers: { "Content-Type": "application/json" },
|
|
284
|
+
body: JSON.stringify({ email }),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
return {
|
|
289
|
+
ok: false,
|
|
290
|
+
reason: "network",
|
|
291
|
+
status: null,
|
|
292
|
+
message: DEV_LOGIN_MESSAGES.network,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
if (!res.ok) {
|
|
296
|
+
if (res.status === 404) {
|
|
297
|
+
return {
|
|
298
|
+
ok: false,
|
|
299
|
+
reason: "test-endpoints-disabled",
|
|
300
|
+
status: 404,
|
|
301
|
+
message: DEV_LOGIN_MESSAGES["test-endpoints-disabled"],
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
if (res.status === 429) {
|
|
305
|
+
return {
|
|
306
|
+
ok: false,
|
|
307
|
+
reason: "rate-limited",
|
|
308
|
+
status: 429,
|
|
309
|
+
message: DEV_LOGIN_MESSAGES["rate-limited"],
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (res.status === 403) {
|
|
313
|
+
return {
|
|
314
|
+
ok: false,
|
|
315
|
+
reason: "forbidden",
|
|
316
|
+
status: 403,
|
|
317
|
+
message: DEV_LOGIN_MESSAGES.forbidden,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
return {
|
|
321
|
+
ok: false,
|
|
322
|
+
reason: "unexpected",
|
|
323
|
+
status: res.status,
|
|
324
|
+
message: `Dev sign-in failed (HTTP ${res.status}).`,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
// Built once: three distinct malformed shapes converge on it below.
|
|
328
|
+
const malformed = {
|
|
329
|
+
ok: false,
|
|
330
|
+
reason: "malformed-response",
|
|
331
|
+
status: res.status,
|
|
332
|
+
message: DEV_LOGIN_MESSAGES["malformed-response"],
|
|
333
|
+
};
|
|
334
|
+
let parsed;
|
|
335
|
+
try {
|
|
336
|
+
parsed = await res.json();
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return malformed;
|
|
340
|
+
}
|
|
341
|
+
// `res.json()` resolving is not the same as "we got an object". A body of
|
|
342
|
+
// literal `null` (or a bare string/number) parses fine, and
|
|
343
|
+
// `extractAccessToken` dereferences its argument — so passing `null`
|
|
344
|
+
// through would THROW out of a function whose result type promises it
|
|
345
|
+
// never does, leaving the DEV button with no error channel at all.
|
|
346
|
+
// Arrays fall through: they are objects, carry no token, and reach the
|
|
347
|
+
// same `malformed` below.
|
|
348
|
+
if (parsed === null || typeof parsed !== "object") {
|
|
349
|
+
return malformed;
|
|
350
|
+
}
|
|
351
|
+
const json = parsed;
|
|
352
|
+
const token = extractAccessToken(json);
|
|
353
|
+
if (!token) {
|
|
354
|
+
return malformed;
|
|
355
|
+
}
|
|
356
|
+
const expiresIn = typeof json.expiresIn === "number"
|
|
357
|
+
? json.expiresIn
|
|
358
|
+
: DEFAULT_ACCESS_TOKEN_TTL;
|
|
359
|
+
store.setAccessToken(token, expiresIn);
|
|
360
|
+
return {
|
|
361
|
+
ok: true,
|
|
362
|
+
accessToken: token,
|
|
363
|
+
expiresIn,
|
|
364
|
+
userId: typeof json.userId === "string" ? json.userId : null,
|
|
365
|
+
orgId: typeof json.orgId === "string" ? json.orgId : null,
|
|
366
|
+
};
|
|
367
|
+
},
|
|
238
368
|
getUserId() {
|
|
239
369
|
return identity?.userId ?? null;
|
|
240
370
|
},
|
package/dist/auth-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { createAuthClient } from "./auth-client.js";
|
|
|
3
3
|
export { createAuthApi } from "./auth-api.js";
|
|
4
4
|
export { validateUserType, hasEntitlement } from "./auth-guard.js";
|
|
5
5
|
export { extractAccessToken } from "./extract-token.js";
|
|
6
|
-
export { AuthError, type AuthUser, type AuthStore, type AuthStoreConfig, type AuthClient, type AuthClientConfig, type AuthApi, type RegisterInput, type RequestOtpResponse, type VerifyOtpResponse, type AuthErrorResponse, type UserType, type DashboardLink, type SessionClaims, type SessionUserType, type OrgChangeListener, type AccessTokenSetListener, type LogoutListener, } from "./types.js";
|
|
6
|
+
export { AuthError, type AuthUser, type AuthStore, type AuthStoreConfig, type AuthClient, type AuthClientConfig, type AuthApi, type RegisterInput, type RequestOtpResponse, type VerifyOtpResponse, type AuthErrorResponse, type DevLoginResult, type DevLoginSuccess, type DevLoginFailure, type DevLoginFailureReason, type UserType, type DashboardLink, type SessionClaims, type SessionUserType, type OrgChangeListener, type AccessTokenSetListener, type LogoutListener, } from "./types.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,SAAS,GAsBV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* INTERNAL (CEL-1364) — nothing in this module is re-exported from
|
|
3
|
+
* `@cellarnode/auth/react`. `LoginForm` is the only supported entry point; see
|
|
4
|
+
* the note in `src/react/index.ts`.
|
|
5
|
+
*
|
|
6
|
+
* localStorage key holding the last address used with the dev bypass. DEV-only
|
|
7
|
+
* convenience: it prefills the sign-in email so a fresh tab is one click from a
|
|
8
|
+
* session. Both call sites sit inside `LoginForm`'s `import.meta.env.DEV`
|
|
9
|
+
* branch, so production never reaches them — though the helpers themselves are
|
|
10
|
+
* called from live function bodies and therefore stay in the bundle as
|
|
11
|
+
* unreachable code (see `__tests__/dev-bypass-treeshake.test.ts`).
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEV_LOGIN_EMAIL_STORAGE_KEY = "cellarnode.dev.login-email";
|
|
14
|
+
/**
|
|
15
|
+
* Last address used with the dev bypass, or null.
|
|
16
|
+
*
|
|
17
|
+
* Tolerant by design — storage access throws in Safari private mode and in
|
|
18
|
+
* any non-browser host (SSR, tests), and a prefill is never worth a crash.
|
|
19
|
+
*/
|
|
20
|
+
export declare function readDevLoginEmail(): string | null;
|
|
21
|
+
/** Remember `email` for the next dev sign-in. Silently no-ops on failure. */
|
|
22
|
+
export declare function rememberDevLoginEmail(email: string): void;
|
|
23
|
+
export interface DevSignInBypassProps {
|
|
24
|
+
/** Address the bypass will sign in as — the sign-in form's own email field. */
|
|
25
|
+
email: string;
|
|
26
|
+
/** True while the bypass request is in flight. */
|
|
27
|
+
isSubmitting: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* True while the OTP form is busy. The guard is reciprocal — `LoginForm`
|
|
30
|
+
* also feeds its own dev-submitting state into the OTP submit button — which
|
|
31
|
+
* is what actually makes "the two affordances can't race" true rather than
|
|
32
|
+
* aspirational.
|
|
33
|
+
*/
|
|
34
|
+
disabled?: boolean;
|
|
35
|
+
/** Developer-facing failure message from `authStore.devLogin()`. */
|
|
36
|
+
error?: string;
|
|
37
|
+
onDevSignIn: () => void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* DEV-only affordance rendered ALONGSIDE the OTP email form (CEL-1364).
|
|
41
|
+
*
|
|
42
|
+
* It is strictly additive: the OTP flow above it stays fully reachable and
|
|
43
|
+
* testable, and nothing here auto-submits or auto-redirects. A developer opts
|
|
44
|
+
* in with a click.
|
|
45
|
+
*
|
|
46
|
+
* The component is only ever referenced from inside an
|
|
47
|
+
* `import.meta.env.DEV && …` branch, so production bundles drop the branch and
|
|
48
|
+
* this component with it (the package sets `sideEffects: false`). The two
|
|
49
|
+
* storage helpers above are called from live function bodies behind runtime
|
|
50
|
+
* guards, so they survive as unreachable code — that difference is pinned in
|
|
51
|
+
* `__tests__/dev-bypass-treeshake.test.ts`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function DevSignInBypass({ email, isSubmitting, disabled, error, onDevSignIn, }: DevSignInBypassProps): import("react/jsx-runtime").JSX.Element;
|
|
54
|
+
//# sourceMappingURL=dev-sign-in.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sign-in.d.ts","sourceRoot":"","sources":["../../src/react/dev-sign-in.tsx"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAOjD;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,QAAgB,EAChB,KAAK,EACL,WAAW,GACZ,EAAE,oBAAoB,2CAsDtB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
import { FlaskConical, Loader2, Zap } from "lucide-react";
|
|
5
|
+
import { clsx } from "clsx";
|
|
6
|
+
/**
|
|
7
|
+
* INTERNAL (CEL-1364) — nothing in this module is re-exported from
|
|
8
|
+
* `@cellarnode/auth/react`. `LoginForm` is the only supported entry point; see
|
|
9
|
+
* the note in `src/react/index.ts`.
|
|
10
|
+
*
|
|
11
|
+
* localStorage key holding the last address used with the dev bypass. DEV-only
|
|
12
|
+
* convenience: it prefills the sign-in email so a fresh tab is one click from a
|
|
13
|
+
* session. Both call sites sit inside `LoginForm`'s `import.meta.env.DEV`
|
|
14
|
+
* branch, so production never reaches them — though the helpers themselves are
|
|
15
|
+
* called from live function bodies and therefore stay in the bundle as
|
|
16
|
+
* unreachable code (see `__tests__/dev-bypass-treeshake.test.ts`).
|
|
17
|
+
*/
|
|
18
|
+
export const DEV_LOGIN_EMAIL_STORAGE_KEY = "cellarnode.dev.login-email";
|
|
19
|
+
/**
|
|
20
|
+
* Last address used with the dev bypass, or null.
|
|
21
|
+
*
|
|
22
|
+
* Tolerant by design — storage access throws in Safari private mode and in
|
|
23
|
+
* any non-browser host (SSR, tests), and a prefill is never worth a crash.
|
|
24
|
+
*/
|
|
25
|
+
export function readDevLoginEmail() {
|
|
26
|
+
try {
|
|
27
|
+
const value = globalThis.localStorage?.getItem(DEV_LOGIN_EMAIL_STORAGE_KEY);
|
|
28
|
+
return value && value.length > 0 ? value : null;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Remember `email` for the next dev sign-in. Silently no-ops on failure. */
|
|
35
|
+
export function rememberDevLoginEmail(email) {
|
|
36
|
+
try {
|
|
37
|
+
globalThis.localStorage?.setItem(DEV_LOGIN_EMAIL_STORAGE_KEY, email);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Storage unavailable — the prefill is optional.
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* DEV-only affordance rendered ALONGSIDE the OTP email form (CEL-1364).
|
|
45
|
+
*
|
|
46
|
+
* It is strictly additive: the OTP flow above it stays fully reachable and
|
|
47
|
+
* testable, and nothing here auto-submits or auto-redirects. A developer opts
|
|
48
|
+
* in with a click.
|
|
49
|
+
*
|
|
50
|
+
* The component is only ever referenced from inside an
|
|
51
|
+
* `import.meta.env.DEV && …` branch, so production bundles drop the branch and
|
|
52
|
+
* this component with it (the package sets `sideEffects: false`). The two
|
|
53
|
+
* storage helpers above are called from live function bodies behind runtime
|
|
54
|
+
* guards, so they survive as unreachable code — that difference is pinned in
|
|
55
|
+
* `__tests__/dev-bypass-treeshake.test.ts`.
|
|
56
|
+
*/
|
|
57
|
+
export function DevSignInBypass({ email, isSubmitting, disabled = false, error, onDevSignIn, }) {
|
|
58
|
+
const headingId = useId();
|
|
59
|
+
const hintId = useId();
|
|
60
|
+
const hasEmail = email.length > 0;
|
|
61
|
+
return (_jsxs("section", { "aria-labelledby": headingId, className: "mt-8 rounded-lg border border-dashed border-border bg-muted/40 p-4", children: [_jsxs("h2", { id: headingId, className: "flex items-center gap-2 text-xs/5 font-semibold uppercase tracking-wide text-muted-foreground", children: [_jsx(FlaskConical, { className: "size-3.5", "aria-hidden": "true" }), "Development only"] }), _jsxs("p", { id: hintId, className: "mt-1.5 text-sm/6 text-muted-foreground", children: ["Sign in as the address above without an emailed code. Requires the API to run with ", _jsx("code", { className: "font-mono", children: "ENABLE_TEST_ENDPOINTS=true" }), " ", "and a local account for that address."] }), _jsxs("button", { type: "button", onClick: onDevSignIn, disabled: disabled || isSubmitting || !hasEmail, "aria-describedby": hintId, className: clsx("mt-3 inline-flex h-10 w-full items-center justify-center gap-2 rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground shadow-xs transition-colors", "hover:bg-muted focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", "disabled:pointer-events-none disabled:opacity-50"), children: [isSubmitting ? (_jsx(Loader2, { className: "size-4 animate-spin", "aria-hidden": "true" })) : (_jsx(Zap, { className: "size-4", "aria-hidden": "true" })), "Dev sign-in (skip the code)"] }), error && (_jsx("p", { role: "alert", className: "mt-3 text-sm/6 text-destructive", children: error }))] }));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=dev-sign-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sign-in.js","sourceRoot":"","sources":["../../src/react/dev-sign-in.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5E,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,IAAI,CAAC;QACH,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AAmBD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,WAAW,GACU;IACrB,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAElC,OAAO,CACL,sCACmB,SAAS,EAC1B,SAAS,EAAC,oEAAoE,aAE9E,cACE,EAAE,EAAE,SAAS,EACb,SAAS,EAAC,+FAA+F,aAEzG,KAAC,YAAY,IAAC,SAAS,EAAC,UAAU,iBAAa,MAAM,GAAG,wBAErD,EAML,aAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,wCAAwC,oGAEnD,eAAM,SAAS,EAAC,WAAW,2CAAkC,EAAC,GAAG,6CAE3E,EAEJ,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ,IAAI,YAAY,IAAI,CAAC,QAAQ,sBAC7B,MAAM,EACxB,SAAS,EAAE,IAAI,CACb,mLAAmL,EACnL,+FAA+F,EAC/F,kDAAkD,CACnD,aAEA,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,OAAO,IAAC,SAAS,EAAC,qBAAqB,iBAAa,MAAM,GAAG,CAC/D,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,CAC9C,mCAEM,EAER,KAAK,IAAI,CACR,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,iCAAiC,YACxD,KAAK,GACJ,CACL,IACO,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYjE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
export { LoginForm } from "./login-form.js";
|
|
3
|
+
/*
|
|
4
|
+
* `./dev-sign-in.js` is DELIBERATELY not re-exported (CEL-1364).
|
|
5
|
+
*
|
|
6
|
+
* `DevSignInBypass`, `DEV_LOGIN_EMAIL_STORAGE_KEY`, `readDevLoginEmail` and
|
|
7
|
+
* `rememberDevLoginEmail` are internals of `LoginForm`'s
|
|
8
|
+
* `import.meta.env.DEV` branch. Naming them here would hand a consumer a
|
|
9
|
+
* supported way to render the bypass UI, or to persist a sign-in address to
|
|
10
|
+
* `localStorage`, from a PRODUCTION build — the gate lives at the single call
|
|
11
|
+
* site inside `LoginForm`, and an exported symbol has no gate at all.
|
|
12
|
+
* Import the module path directly if you are testing this package.
|
|
13
|
+
*/
|
|
3
14
|
export { RegisterForm } from "./register-form.js";
|
|
4
15
|
export { UnauthorizedPage, } from "./unauthorized.js";
|
|
5
16
|
export { SquircleShift } from "./squircle-shift.js";
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,iBAAiB,GAElB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjE;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,iBAAiB,GAElB,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-form.d.ts","sourceRoot":"","sources":["../../src/react/login-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAW7D,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"login-form.d.ts","sourceRoot":"","sources":["../../src/react/login-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAW7D,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkBtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,kJAAkJ;IAClJ,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,uIAAuI;IACvI,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mNAAmN;IACnN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,KAAK,IAAI,CAAC;CACZ;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAiBD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,YAAiB,EACjB,KAAe,EACf,eAAe,EACf,UAAuE,EACvE,oBAA4B,EAC5B,MAAM,EACN,OAAO,GACR,EAAE,cAAc,2CAifhB"}
|
package/dist/react/login-form.js
CHANGED
|
@@ -6,6 +6,7 @@ import { AlertCircle, ArrowLeft, ArrowRight, CheckCircle2, Clock3, Loader2, } fr
|
|
|
6
6
|
import { clsx } from "clsx";
|
|
7
7
|
import { AuthError } from "../types.js";
|
|
8
8
|
import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, } from "./input-otp-slots.js";
|
|
9
|
+
import { DevSignInBypass, readDevLoginEmail, rememberDevLoginEmail, } from "./dev-sign-in.js";
|
|
9
10
|
const LazySquircleShift = React.lazy(() => import("./squircle-shift.js").then((m) => ({ default: m.SquircleShift })));
|
|
10
11
|
/**
|
|
11
12
|
* Uniform, anti-enumeration notice shown once the email step is submitted
|
|
@@ -41,6 +42,23 @@ export function LoginForm({ userType, brandName, authApi, authStore, onLoginSucc
|
|
|
41
42
|
const [countdown, setCountdown] = useState("10:00");
|
|
42
43
|
const [resendCountdown, setResendCountdown] = useState("01:00");
|
|
43
44
|
const [isShaking, setIsShaking] = useState(false);
|
|
45
|
+
const [devError, setDevError] = useState("");
|
|
46
|
+
const [isDevSubmitting, setIsDevSubmitting] = useState(false);
|
|
47
|
+
// DEV-only email prefill (CEL-1364). Guarded INSIDE the effect so the hook
|
|
48
|
+
// itself stays unconditional; Vite folds `import.meta.env.DEV` to `false` in
|
|
49
|
+
// production, so this body never runs there. (The two tiny storage helpers
|
|
50
|
+
// stay in the bundle as unreachable code — only the `DevSignInBypass`
|
|
51
|
+
// component is statically dropped. See __tests__/dev-bypass-treeshake.)
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (!import.meta.env.DEV)
|
|
54
|
+
return;
|
|
55
|
+
if (initialEmail)
|
|
56
|
+
return;
|
|
57
|
+
const remembered = readDevLoginEmail();
|
|
58
|
+
if (!remembered)
|
|
59
|
+
return;
|
|
60
|
+
setEmail((current) => (current.length > 0 ? current : remembered));
|
|
61
|
+
}, [initialEmail]);
|
|
44
62
|
useEffect(() => {
|
|
45
63
|
if (!expiresAt)
|
|
46
64
|
return;
|
|
@@ -141,6 +159,90 @@ export function LoginForm({ userType, brandName, authApi, authStore, onLoginSucc
|
|
|
141
159
|
setIsSubmitting(false);
|
|
142
160
|
}
|
|
143
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* DEV-only bypass (CEL-1364): mint a session straight from `/test/login`.
|
|
164
|
+
*
|
|
165
|
+
* Never auto-runs — it fires only from the dev button's click. On success it
|
|
166
|
+
* applies the SAME portal guard the OTP path applies, so a producer address
|
|
167
|
+
* still can't land inside the importer portal (and vice versa), and it fails
|
|
168
|
+
* CLOSED: an unresolvable user type clears the token instead of standing.
|
|
169
|
+
*
|
|
170
|
+
* Token-adoption ordering matches `handleOtpSubmit` deliberately: both adopt
|
|
171
|
+
* the token first and clear it when the portal check rejects. If that order
|
|
172
|
+
* is ever tightened, tighten BOTH paths — fixing only this one hides the
|
|
173
|
+
* remaining hole in the OTP path.
|
|
174
|
+
*
|
|
175
|
+
* Every exit goes through `setDevError` (rendered as the bypass's `role=
|
|
176
|
+
* "alert"`), including the catch-all: a click handler is not an awaited
|
|
177
|
+
* caller, so anything that escapes here is an unhandled rejection nobody
|
|
178
|
+
* reads.
|
|
179
|
+
*/
|
|
180
|
+
async function handleDevLogin() {
|
|
181
|
+
if (!authStore.devLogin)
|
|
182
|
+
return;
|
|
183
|
+
setError("");
|
|
184
|
+
setDevError("");
|
|
185
|
+
setIsDevSubmitting(true);
|
|
186
|
+
try {
|
|
187
|
+
const result = await authStore.devLogin(normalizedEmail);
|
|
188
|
+
if (!result.ok) {
|
|
189
|
+
setDevError(result.message);
|
|
190
|
+
onError?.({
|
|
191
|
+
code: `DEV_LOGIN_${result.reason.replace(/-/g, "_").toUpperCase()}`,
|
|
192
|
+
message: result.message,
|
|
193
|
+
});
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
// Portal guard, mirroring handleOtpSubmit. `verifyOtp` returns the user
|
|
197
|
+
// inline; the dev path has to ask `/auth/me` separately, so an
|
|
198
|
+
// unresolvable answer is a FAILED check, never a pass. Letting it pass
|
|
199
|
+
// would hand a transient `/auth/me` failure the power to seat an importer
|
|
200
|
+
// session inside the producer portal.
|
|
201
|
+
let authenticatedUserType = null;
|
|
202
|
+
try {
|
|
203
|
+
const me = await authApi.getMe(result.accessToken);
|
|
204
|
+
authenticatedUserType = me?.userType ?? null;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
authenticatedUserType = null;
|
|
208
|
+
}
|
|
209
|
+
if (!authenticatedUserType) {
|
|
210
|
+
const msg = "Couldn't verify your account type. Try again.";
|
|
211
|
+
authStore.clearAccessToken();
|
|
212
|
+
setDevError(msg);
|
|
213
|
+
onError?.({ code: "DEV_LOGIN_USER_TYPE_UNVERIFIED", message: msg });
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (authenticatedUserType !== userType) {
|
|
217
|
+
const msg = `This portal is for ${userType} accounts only.`;
|
|
218
|
+
authStore.clearAccessToken();
|
|
219
|
+
setDevError(msg);
|
|
220
|
+
onError?.({
|
|
221
|
+
code: "USER_TYPE_MISMATCH",
|
|
222
|
+
message: msg,
|
|
223
|
+
authenticatedUserType,
|
|
224
|
+
});
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
rememberDevLoginEmail(normalizedEmail);
|
|
228
|
+
onLoginSuccess();
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
// `devLogin` is OPTIONAL on `AuthStore`, so a custom implementation is
|
|
232
|
+
// free to REJECT instead of resolving a `DevLoginFailure`; `getMe` is
|
|
233
|
+
// already wrapped, but `clearAccessToken` and `onLoginSuccess` can throw
|
|
234
|
+
// too. Without this catch the rejection escapes the click handler as an
|
|
235
|
+
// unhandled rejection — `finally` still re-enables the button, so the
|
|
236
|
+
// developer sees a form that silently did nothing.
|
|
237
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
238
|
+
const msg = `Dev sign-in failed unexpectedly: ${detail}`;
|
|
239
|
+
setDevError(msg);
|
|
240
|
+
onError?.({ code: "DEV_LOGIN_UNEXPECTED", message: msg });
|
|
241
|
+
}
|
|
242
|
+
finally {
|
|
243
|
+
setIsDevSubmitting(false);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
144
246
|
async function handleResend() {
|
|
145
247
|
setError("");
|
|
146
248
|
setIsSubmitting(true);
|
|
@@ -162,7 +264,7 @@ export function LoginForm({ userType, brandName, authApi, authStore, onLoginSucc
|
|
|
162
264
|
? "Enter your work email to receive a one-time access code."
|
|
163
265
|
: otpSentNotice(normalizedEmail) }), _jsx("div", { className: "mt-8", children: step === "email" ? (_jsxs("form", { onSubmit: handleEmailSubmit, className: "grid gap-5", children: [_jsxs("div", { className: "grid gap-2", children: [_jsx("label", { htmlFor: "email", className: "text-sm font-medium leading-none", children: "Email address" }), _jsx("input", { id: "email", type: "email", placeholder: "you@company.com", value: email, onChange: (event) => setEmail(event.target.value), required: true, "aria-invalid": !!error || undefined, className: clsx("flex h-10 w-full rounded-md border bg-background px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 transition-colors", error
|
|
164
266
|
? "border-destructive focus-visible:ring-destructive/30 focus-visible:border-destructive"
|
|
165
|
-
: "border-input focus-visible:ring-ring/50 focus-visible:border-ring") }), error && !onError && (_jsxs("div", { className: "flex items-start gap-2 text-sm text-destructive", children: [_jsx(AlertCircle, { className: "size-4 shrink-0 mt-0.5" }), _jsx("span", { children: error })] }))] }), _jsxs("button", { type: "submit", className: "inline-flex h-11 w-full items-center justify-center gap-2 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50", disabled: isSubmitting || !normalizedEmail, children: [isSubmitting ? (_jsx(Loader2, { className: "mr-2 size-4 animate-spin" })) : (_jsx(ArrowRight, { className: "mr-2 size-4" })), "Continue"] })] })) : (_jsxs("form", { id: "otp-form", onSubmit: handleOtpSubmit, className: "grid gap-5", children: [_jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-3 py-1 text-xs font-medium text-muted-foreground", children: [_jsx(Clock3, { className: "size-3" }), "Expires in ", countdown] }) }), _jsxs("div", { className: "grid gap-2", children: [_jsxs(InputOTP, { id: "otp", value: code, onChange: (value) => {
|
|
267
|
+
: "border-input focus-visible:ring-ring/50 focus-visible:border-ring") }), error && !onError && (_jsxs("div", { className: "flex items-start gap-2 text-sm text-destructive", children: [_jsx(AlertCircle, { className: "size-4 shrink-0 mt-0.5" }), _jsx("span", { children: error })] }))] }), _jsxs("button", { type: "submit", className: "inline-flex h-11 w-full items-center justify-center gap-2 rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50", disabled: isSubmitting || isDevSubmitting || !normalizedEmail, children: [isSubmitting ? (_jsx(Loader2, { className: "mr-2 size-4 animate-spin" })) : (_jsx(ArrowRight, { className: "mr-2 size-4" })), "Continue"] })] })) : (_jsxs("form", { id: "otp-form", onSubmit: handleOtpSubmit, className: "grid gap-5", children: [_jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-3 py-1 text-xs font-medium text-muted-foreground", children: [_jsx(Clock3, { className: "size-3" }), "Expires in ", countdown] }) }), _jsxs("div", { className: "grid gap-2", children: [_jsxs(InputOTP, { id: "otp", value: code, onChange: (value) => {
|
|
166
268
|
setCode(value);
|
|
167
269
|
if (error)
|
|
168
270
|
setError("");
|
|
@@ -173,6 +275,6 @@ export function LoginForm({ userType, brandName, authApi, authStore, onLoginSucc
|
|
|
173
275
|
setStep("email");
|
|
174
276
|
setCode("");
|
|
175
277
|
setError("");
|
|
176
|
-
}, children: _jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx(ArrowLeft, { className: "size-3.5" }), "Change email"] }) }), _jsx("button", { type: "button", className: "text-primary transition-colors hover:text-primary/80 disabled:text-muted-foreground/50", onClick: handleResend, disabled: isSubmitting || !canResend, children: canResend ? "Resend code" : `Resend in ${resendCountdown}` })] })] })) }), step === "email" && (_jsx("p", { className: "mt-8 text-center text-sm text-muted-foreground", children: showRegisterInFooter && onNavigateRegister ? (_jsxs(_Fragment, { children: ["Need an account?", " ", _jsx("button", { type: "button", onClick: onNavigateRegister, className: "text-primary transition-colors hover:text-primary/80", children: "Register here" })] })) : (footerText) }))] }) })] }), _jsx("div", { className: "hidden lg:block", children: _jsx(Suspense, { fallback: _jsx("div", { className: "size-full bg-muted" }), children: _jsx(LazySquircleShift, { className: "size-full", theme: theme }) }) })] }));
|
|
278
|
+
}, children: _jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx(ArrowLeft, { className: "size-3.5" }), "Change email"] }) }), _jsx("button", { type: "button", className: "text-primary transition-colors hover:text-primary/80 disabled:text-muted-foreground/50", onClick: handleResend, disabled: isSubmitting || !canResend, children: canResend ? "Resend code" : `Resend in ${resendCountdown}` })] })] })) }), import.meta.env.DEV && step === "email" && authStore.devLogin && (_jsx(DevSignInBypass, { email: normalizedEmail, isSubmitting: isDevSubmitting, disabled: isSubmitting, error: devError, onDevSignIn: handleDevLogin })), step === "email" && (_jsx("p", { className: "mt-8 text-center text-sm text-muted-foreground", children: showRegisterInFooter && onNavigateRegister ? (_jsxs(_Fragment, { children: ["Need an account?", " ", _jsx("button", { type: "button", onClick: onNavigateRegister, className: "text-primary transition-colors hover:text-primary/80", children: "Register here" })] })) : (footerText) }))] }) })] }), _jsx("div", { className: "hidden lg:block", children: _jsx(Suspense, { fallback: _jsx("div", { className: "size-full bg-muted" }), children: _jsx(LazySquircleShift, { className: "size-full", theme: theme }) }) })] }));
|
|
177
279
|
}
|
|
178
280
|
//# sourceMappingURL=login-form.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-form.js","sourceRoot":"","sources":["../../src/react/login-form.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login-form.js","sourceRoot":"","sources":["../../src/react/login-form.tsx"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -79,6 +79,33 @@ export interface SessionClaims {
|
|
|
79
79
|
*/
|
|
80
80
|
entitlements: string[];
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Why a `devLogin()` attempt did not produce a session (CEL-1364).
|
|
84
|
+
*
|
|
85
|
+
* ANTI-ENUMERATION CONTRACT (backend T3-1): `POST /test/login` returns the SAME
|
|
86
|
+
* 404 body whether the test-endpoint gate is off OR the address has no local
|
|
87
|
+
* account. The client therefore CANNOT tell those cases apart, and must not
|
|
88
|
+
* pretend it can — `"test-endpoints-disabled"` is client-side framing of "the
|
|
89
|
+
* gate is off", never "this email does not exist". Never derive account
|
|
90
|
+
* existence from this reason, and never surface it as such in UI copy.
|
|
91
|
+
*/
|
|
92
|
+
export type DevLoginFailureReason = "test-endpoints-disabled" | "rate-limited" | "forbidden" | "network" | "malformed-response" | "unexpected";
|
|
93
|
+
export interface DevLoginSuccess {
|
|
94
|
+
ok: true;
|
|
95
|
+
accessToken: string;
|
|
96
|
+
expiresIn: number;
|
|
97
|
+
userId: string | null;
|
|
98
|
+
orgId: string | null;
|
|
99
|
+
}
|
|
100
|
+
export interface DevLoginFailure {
|
|
101
|
+
ok: false;
|
|
102
|
+
reason: DevLoginFailureReason;
|
|
103
|
+
/** HTTP status, or null when the request never completed (network error). */
|
|
104
|
+
status: number | null;
|
|
105
|
+
/** Ready-to-render, developer-facing message. Safe for DEV-only UI. */
|
|
106
|
+
message: string;
|
|
107
|
+
}
|
|
108
|
+
export type DevLoginResult = DevLoginSuccess | DevLoginFailure;
|
|
82
109
|
export type OrgChangeListener = (orgId: string | null) => void;
|
|
83
110
|
export type AccessTokenSetListener = (token: string | null) => void;
|
|
84
111
|
export type LogoutListener = () => void;
|
|
@@ -88,6 +115,42 @@ export interface AuthStore {
|
|
|
88
115
|
setAccessToken(token: string, expiresIn: number): void;
|
|
89
116
|
clearAccessToken(): void;
|
|
90
117
|
ensureAccessToken(forceRefresh?: boolean): Promise<string | null>;
|
|
118
|
+
/**
|
|
119
|
+
* LOCAL-DEV ONLY — mint a session for `email` via the backend's
|
|
120
|
+
* `POST /test/login`, bypassing the OTP round-trip (CEL-1364).
|
|
121
|
+
*
|
|
122
|
+
* Adoption is the verify-otp path verbatim: the returned JWE goes through
|
|
123
|
+
* `setAccessToken()`, so identity resolution, the refresh timer, and the
|
|
124
|
+
* `onAccessTokenSet` / `onOrgChange` listeners all fire exactly as they do
|
|
125
|
+
* after a real OTP verification. The backend additionally sets the same
|
|
126
|
+
* refresh cookies as the OTP flow, so `/auth/refresh` works afterwards.
|
|
127
|
+
*
|
|
128
|
+
* Rejects nothing: every outcome is returned as a `DevLoginResult` so the
|
|
129
|
+
* DEV-only UI can render an actionable hint. That includes a body that
|
|
130
|
+
* parses as literal `null` — see `createAuthStore`.
|
|
131
|
+
*
|
|
132
|
+
* SAFETY — read before "hardening" this. `devLogin` and its failure copy DO
|
|
133
|
+
* ship in production bundles. It is a method on the object `createAuthStore()`
|
|
134
|
+
* returns, called from a live function body, so no bundler can eliminate it,
|
|
135
|
+
* and no runtime `import.meta.env.DEV` check inside it would eliminate it
|
|
136
|
+
* either (the core entry is deliberately bundler-agnostic — `import.meta.env`
|
|
137
|
+
* is `undefined` in a plain Node ESM host, so reading `.DEV` off it would
|
|
138
|
+
* THROW out of a method whose whole contract is that it does not).
|
|
139
|
+
*
|
|
140
|
+
* What makes that acceptable is that the gate is entirely server-side and
|
|
141
|
+
* double-enforced: `POST /test/login` is only MOUNTED when
|
|
142
|
+
* `!isProdLike() && ENABLE_TEST_ENDPOINTS === "true"`, and every handler
|
|
143
|
+
* re-checks the same predicate. In production the route does not exist, so a
|
|
144
|
+
* shipped `devLogin` resolves `{ ok: false, reason: "test-endpoints-disabled" }`
|
|
145
|
+
* and nothing else. Shipping the client of a non-existent route grants no
|
|
146
|
+
* capability an attacker could not reach with `curl`.
|
|
147
|
+
*
|
|
148
|
+
* Optional on the interface so custom `AuthStore` implementations (e.g. a
|
|
149
|
+
* mobile secure-store adapter) stay source-compatible. `createAuthStore()`
|
|
150
|
+
* always provides it. Being optional also means an implementation may REJECT
|
|
151
|
+
* rather than resolve, which callers must handle.
|
|
152
|
+
*/
|
|
153
|
+
devLogin?(email: string): Promise<DevLoginResult>;
|
|
91
154
|
/**
|
|
92
155
|
* userId of the current session, or null.
|
|
93
156
|
*
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,SAAU,SAAQ,KAAK;aAEhB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;aAEZ,iBAAiB,CAAC,EAAE,MAAM;gBAH1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,iBAAiB,CAAC,EAAE,MAAM,YAAA;CAK7C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AAC/D,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,WAAW,SAAS;IACxB,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACvD,gBAAgB,IAAI,IAAI,CAAC;IACzB,iBAAiB,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAElE;;;;;;OAMG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAE3B,0FAA0F;IAC1F,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;IAE1B,yEAAyE;IACzE,WAAW,IAAI,eAAe,GAAG,IAAI,CAAC;IAEtC;;;;OAIG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B,6DAA6D;IAC7D,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IAErD,oGAAoG;IACpG,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI,CAAC;IAE/D,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cellarnode/auth",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Shared OTP-based authentication — token store, API client, React UI components for CellarNode dashboards.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"@testing-library/react": "^16.0.0",
|
|
86
86
|
"@types/react": "^19.0.0",
|
|
87
87
|
"@types/three": ">=0.160.0",
|
|
88
|
+
"esbuild": "^0.27.0",
|
|
88
89
|
"happy-dom": "^20.0.0",
|
|
89
90
|
"input-otp": ">=1.4.0",
|
|
90
91
|
"lucide-react": ">=0.400.0",
|