@cellarnode/auth 0.13.3 → 0.15.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 +120 -4
- package/dist/auth-api.d.ts.map +1 -1
- package/dist/auth-api.js +44 -5
- package/dist/auth-api.js.map +1 -1
- package/dist/auth-client.d.ts.map +1 -1
- package/dist/auth-client.js +61 -17
- package/dist/auth-client.js.map +1 -1
- package/dist/auth-store.d.ts +2 -2
- package/dist/auth-store.d.ts.map +1 -1
- package/dist/auth-store.js +564 -173
- package/dist/auth-store.js.map +1 -1
- package/dist/auth-transport.d.ts +5 -0
- package/dist/auth-transport.d.ts.map +1 -0
- package/dist/auth-transport.js +45 -0
- package/dist/auth-transport.js.map +1 -0
- package/dist/auth-user.d.ts +7 -0
- package/dist/auth-user.d.ts.map +1 -0
- package/dist/auth-user.js +73 -0
- package/dist/auth-user.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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 +105 -3
- package/dist/react/login-form.js.map +1 -1
- package/dist/session-continuity.d.ts +13 -0
- package/dist/session-continuity.d.ts.map +1 -0
- package/dist/session-continuity.js +107 -0
- package/dist/session-continuity.js.map +1 -0
- package/dist/types.d.ts +130 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
package/dist/auth-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Build one same-origin auth URL while preserving a base URL path prefix. */
|
|
2
|
+
export declare function resolveAuthRequestUrl(baseUrl: string, path: string): string;
|
|
3
|
+
/** Send auth traffic without following redirects that could cross transport boundaries. */
|
|
4
|
+
export declare function fetchAuthRequest(baseUrl: string, path: string, init?: RequestInit): Promise<Response>;
|
|
5
|
+
//# sourceMappingURL=auth-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-transport.d.ts","sourceRoot":"","sources":["../src/auth-transport.ts"],"names":[],"mappings":"AA4BA,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB3E;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,QAAQ,CAAC,CAGnB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
2
|
+
const ENCODED_PATH_BOUNDARY = /%(?:2f|5c|25)/i;
|
|
3
|
+
function parseAllowedUrl(value) {
|
|
4
|
+
let url;
|
|
5
|
+
try {
|
|
6
|
+
url = new URL(value);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
throw new TypeError("Auth request URL is invalid");
|
|
10
|
+
}
|
|
11
|
+
if (url.username || url.password) {
|
|
12
|
+
throw new TypeError("Auth request URL must not contain userinfo");
|
|
13
|
+
}
|
|
14
|
+
if (ENCODED_PATH_BOUNDARY.test(url.pathname)) {
|
|
15
|
+
throw new TypeError("Auth request URL contains an encoded path boundary");
|
|
16
|
+
}
|
|
17
|
+
if (url.protocol !== "https:" &&
|
|
18
|
+
!(url.protocol === "http:" && LOOPBACK_HOSTS.has(url.hostname))) {
|
|
19
|
+
throw new TypeError("Auth requests require HTTPS except for loopback local development");
|
|
20
|
+
}
|
|
21
|
+
return url;
|
|
22
|
+
}
|
|
23
|
+
/** Build one same-origin auth URL while preserving a base URL path prefix. */
|
|
24
|
+
export function resolveAuthRequestUrl(baseUrl, path) {
|
|
25
|
+
const base = parseAllowedUrl(baseUrl);
|
|
26
|
+
const basePath = base.pathname.endsWith("/")
|
|
27
|
+
? base.pathname
|
|
28
|
+
: `${base.pathname}/`;
|
|
29
|
+
base.pathname = basePath;
|
|
30
|
+
base.search = "";
|
|
31
|
+
base.hash = "";
|
|
32
|
+
const relativePath = path.replace(/^\/+/, "");
|
|
33
|
+
const request = parseAllowedUrl(new URL(relativePath, base).href);
|
|
34
|
+
if (request.origin !== base.origin ||
|
|
35
|
+
!request.pathname.startsWith(basePath)) {
|
|
36
|
+
throw new TypeError("Auth request URL must stay within configured base URL");
|
|
37
|
+
}
|
|
38
|
+
return request.href;
|
|
39
|
+
}
|
|
40
|
+
/** Send auth traffic without following redirects that could cross transport boundaries. */
|
|
41
|
+
export function fetchAuthRequest(baseUrl, path, init = {}) {
|
|
42
|
+
const url = resolveAuthRequestUrl(baseUrl, path);
|
|
43
|
+
return fetch(url, { ...init, redirect: "error" });
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=auth-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-transport.js","sourceRoot":"","sources":["../src/auth-transport.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACpE,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAE/C,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,CAAC;IACD,IACE,GAAG,CAAC,QAAQ,KAAK,QAAQ;QACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAC/D,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,IAAY;IACjE,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,QAAQ;QACf,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;IACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAEf,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,IACE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAC9B,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EACtC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,IAAY,EACZ,OAAoB,EAAE;IAEtB,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthUser, VerifyOtpUser } from "./types.js";
|
|
2
|
+
/** Validate and defensively copy the sparse `/auth/verify-otp` user. */
|
|
3
|
+
export declare function parseVerifyOtpUser(value: unknown): VerifyOtpUser | null;
|
|
4
|
+
/** Validate and defensively copy the complete `/auth/me` response. */
|
|
5
|
+
export declare function parseAuthUser(value: unknown): AuthUser | null;
|
|
6
|
+
export declare function copyAuthUser(user: AuthUser): AuthUser;
|
|
7
|
+
//# sourceMappingURL=auth-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-user.d.ts","sourceRoot":"","sources":["../src/auth-user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAER,aAAa,EACd,MAAM,YAAY,CAAC;AAkDpB,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAEvE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAuB7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAQrD"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const SESSION_USER_TYPES = new Set([
|
|
2
|
+
"importer",
|
|
3
|
+
"producer",
|
|
4
|
+
"distributor",
|
|
5
|
+
"admin",
|
|
6
|
+
]);
|
|
7
|
+
function hasOwn(value, key) {
|
|
8
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
9
|
+
}
|
|
10
|
+
function parseRequiredUserFields(value) {
|
|
11
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const user = value;
|
|
15
|
+
if (typeof user.id !== "string" ||
|
|
16
|
+
user.id.length === 0 ||
|
|
17
|
+
typeof user.email !== "string" ||
|
|
18
|
+
typeof user.name !== "string" ||
|
|
19
|
+
!hasOwn(user, "orgId") ||
|
|
20
|
+
!(user.orgId === null || typeof user.orgId === "string") ||
|
|
21
|
+
!hasOwn(user, "userType") ||
|
|
22
|
+
!(user.userType === null ||
|
|
23
|
+
(typeof user.userType === "string" &&
|
|
24
|
+
SESSION_USER_TYPES.has(user.userType))) ||
|
|
25
|
+
!Array.isArray(user.roles) ||
|
|
26
|
+
!user.roles.every((role) => typeof role === "string") ||
|
|
27
|
+
(user.phone !== undefined && typeof user.phone !== "string")) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
id: user.id,
|
|
32
|
+
email: user.email,
|
|
33
|
+
name: user.name,
|
|
34
|
+
...(user.phone === undefined ? {} : { phone: user.phone }),
|
|
35
|
+
userType: user.userType,
|
|
36
|
+
orgId: user.orgId,
|
|
37
|
+
roles: [...user.roles],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Validate and defensively copy the sparse `/auth/verify-otp` user. */
|
|
41
|
+
export function parseVerifyOtpUser(value) {
|
|
42
|
+
return parseRequiredUserFields(value);
|
|
43
|
+
}
|
|
44
|
+
/** Validate and defensively copy the complete `/auth/me` response. */
|
|
45
|
+
export function parseAuthUser(value) {
|
|
46
|
+
const required = parseRequiredUserFields(value);
|
|
47
|
+
if (!required)
|
|
48
|
+
return null;
|
|
49
|
+
const user = value;
|
|
50
|
+
if (typeof user.createdAt !== "string" ||
|
|
51
|
+
(user.entitlements !== undefined &&
|
|
52
|
+
(!Array.isArray(user.entitlements) ||
|
|
53
|
+
!user.entitlements.every((entitlement) => typeof entitlement === "string")))) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
...required,
|
|
58
|
+
...(user.entitlements === undefined
|
|
59
|
+
? {}
|
|
60
|
+
: { entitlements: [...user.entitlements] }),
|
|
61
|
+
createdAt: user.createdAt,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function copyAuthUser(user) {
|
|
65
|
+
return {
|
|
66
|
+
...user,
|
|
67
|
+
roles: [...user.roles],
|
|
68
|
+
...(user.entitlements === undefined
|
|
69
|
+
? {}
|
|
70
|
+
: { entitlements: [...user.entitlements] }),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=auth-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-user.js","sourceRoot":"","sources":["../src/auth-user.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ 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 {
|
|
6
|
+
export { captureSessionContinuity, canReplaySession, resolveSessionForReplay, } from "./session-continuity.js";
|
|
7
|
+
export { AuthError, type AuthUser, type AuthStore, type ConcreteAuthStore, type AuthStoreConfig, type AuthClient, type AuthClientConfig, type AuthApi, type RegisterInput, type RequestOtpResponse, type VerifyOtpResponse, type VerifyOtpUser, type AuthErrorResponse, type DevLoginResult, type DevLoginSuccess, type DevLoginFailure, type DevLoginFailureReason, type UserType, type DashboardLink, type SessionClaims, type SessionUserType, type ResolveSessionOptions, type SessionResolution, type SessionState, type SessionStateListener, type SessionContinuity, type OrgChangeListener, type AccessTokenSetListener, type LogoutListener, } from "./types.js";
|
|
7
8
|
//# 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;
|
|
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;AACxD,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,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,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,5 +3,6 @@ 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 { captureSessionContinuity, canReplaySession, resolveSessionForReplay, } from "./session-continuity.js";
|
|
6
7
|
export { AuthError, } from "./types.js";
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
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;
|
|
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;AACxD,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,SAAS,GA6BV,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;
|
|
@@ -124,7 +142,7 @@ export function LoginForm({ userType, brandName, authApi, authStore, onLoginSucc
|
|
|
124
142
|
const msg = `This portal is for ${userType} accounts only.`;
|
|
125
143
|
setError(msg);
|
|
126
144
|
if (onError)
|
|
127
|
-
onError({ code: "USER_TYPE_MISMATCH", message: msg, authenticatedUserType: result.user.userType });
|
|
145
|
+
onError({ code: "USER_TYPE_MISMATCH", message: msg, authenticatedUserType: result.user.userType ?? undefined });
|
|
128
146
|
authStore.clearAccessToken();
|
|
129
147
|
return;
|
|
130
148
|
}
|
|
@@ -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
|