@porulle/core 0.13.0 → 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/dist/auth/actor.d.ts +10 -0
- package/dist/auth/actor.d.ts.map +1 -0
- package/dist/auth/actor.js +91 -0
- package/dist/auth/middleware.d.ts +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +5 -89
- package/dist/auth/setup.d.ts.map +1 -1
- package/dist/auth/setup.js +2 -1
- package/dist/config/types.d.ts +2 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/kernel/database/plugin-types.d.ts +11 -0
- package/dist/kernel/database/plugin-types.d.ts.map +1 -1
- package/dist/kernel/database/scoped-db.d.ts +12 -0
- package/dist/kernel/database/scoped-db.d.ts.map +1 -1
- package/dist/kernel/database/scoped-db.js +12 -0
- package/dist/modules/search/adapter.d.ts +5 -0
- package/dist/modules/search/adapter.d.ts.map +1 -1
- package/dist/modules/search/module.d.ts.map +1 -1
- package/dist/modules/search/module.js +3 -1
- package/dist/runtime/server.d.ts.map +1 -1
- package/dist/runtime/server.js +18 -0
- package/package.json +1 -1
- package/src/auth/actor.ts +110 -0
- package/src/auth/middleware.ts +11 -99
- package/src/auth/setup.ts +2 -1
- package/src/config/types.ts +2 -0
- package/src/index.ts +5 -0
- package/src/kernel/database/plugin-types.ts +11 -0
- package/src/kernel/database/scoped-db.ts +12 -0
- package/src/modules/search/adapter.ts +3 -0
- package/src/modules/search/module.ts +4 -1
- package/src/runtime/server.ts +25 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CommerceConfig } from "../config/types.js";
|
|
2
|
+
import type { Actor } from "./types.js";
|
|
3
|
+
import type { AuthInstance } from "./setup.js";
|
|
4
|
+
export declare const AUTH_COOKIE_PREFIX = "uc";
|
|
5
|
+
export declare const SESSION_COOKIE_NAME = "uc.session_token";
|
|
6
|
+
export declare const DEFAULT_CUSTOMER_PERMISSIONS: readonly ["catalog:read", "cart:create", "cart:read", "cart:update", "orders:create", "orders:read:own", "customers:read:self", "customers:update:self"];
|
|
7
|
+
export declare function getCustomerPermissions(config: CommerceConfig): string[];
|
|
8
|
+
/** Resolve a better-auth session and its porulle organization permissions. */
|
|
9
|
+
export declare function resolveActor(headers: Headers, auth: AuthInstance, config: CommerceConfig, request?: Request): Promise<Actor | null>;
|
|
10
|
+
//# sourceMappingURL=actor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/auth/actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,qBAAwC,CAAC;AAEzE,eAAO,MAAM,4BAA4B,0JAS/B,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAEvE;AAYD,8EAA8E;AAC9E,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,OAAsD,GAC9D,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAsEvB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DEFAULT_ORG_ID } from "./org.js";
|
|
2
|
+
export const AUTH_COOKIE_PREFIX = "uc";
|
|
3
|
+
export const SESSION_COOKIE_NAME = `${AUTH_COOKIE_PREFIX}.session_token`;
|
|
4
|
+
export const DEFAULT_CUSTOMER_PERMISSIONS = [
|
|
5
|
+
"catalog:read",
|
|
6
|
+
"cart:create",
|
|
7
|
+
"cart:read",
|
|
8
|
+
"cart:update",
|
|
9
|
+
"orders:create",
|
|
10
|
+
"orders:read:own",
|
|
11
|
+
"customers:read:self",
|
|
12
|
+
"customers:update:self",
|
|
13
|
+
];
|
|
14
|
+
export function getCustomerPermissions(config) {
|
|
15
|
+
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
16
|
+
}
|
|
17
|
+
function resolvePermissions(session, config) {
|
|
18
|
+
const role = session.session.activeOrganizationRole;
|
|
19
|
+
if (!role)
|
|
20
|
+
return getCustomerPermissions(config);
|
|
21
|
+
const roleConfig = config.auth?.roles?.[role];
|
|
22
|
+
return roleConfig ? roleConfig.permissions : [];
|
|
23
|
+
}
|
|
24
|
+
/** Resolve a better-auth session and its porulle organization permissions. */
|
|
25
|
+
export async function resolveActor(headers, auth, config, request = new Request("http://localhost", { headers })) {
|
|
26
|
+
let session;
|
|
27
|
+
try {
|
|
28
|
+
session = (await auth.api.getSession({
|
|
29
|
+
headers,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (!session)
|
|
36
|
+
return null;
|
|
37
|
+
const defaultOrgId = config.auth?.defaultOrganizationId ?? DEFAULT_ORG_ID;
|
|
38
|
+
let role = session.session.activeOrganizationRole;
|
|
39
|
+
let orgId = session.session.activeOrganizationId;
|
|
40
|
+
if (!role && auth.api.getFullOrganization) {
|
|
41
|
+
try {
|
|
42
|
+
const org = await auth.api.getFullOrganization({
|
|
43
|
+
query: { organizationId: orgId ?? defaultOrgId },
|
|
44
|
+
headers,
|
|
45
|
+
});
|
|
46
|
+
if (org?.members) {
|
|
47
|
+
const membership = org.members.find((m) => m.userId === session.user.id);
|
|
48
|
+
if (membership) {
|
|
49
|
+
role = membership.role;
|
|
50
|
+
orgId = orgId ?? defaultOrgId;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// fall through — treat as customer
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
59
|
+
try {
|
|
60
|
+
const roleResult = await auth.api.getActiveMemberRole({ headers });
|
|
61
|
+
role = roleResult?.role;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// fall through — treat as customer
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (!orgId && config.auth?.storeResolver) {
|
|
68
|
+
try {
|
|
69
|
+
const resolved = await config.auth.storeResolver(request);
|
|
70
|
+
if (resolved)
|
|
71
|
+
orgId = resolved;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// fall through — use defaultOrgId
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const enrichedSession = {
|
|
78
|
+
...session,
|
|
79
|
+
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
type: "user",
|
|
83
|
+
userId: session.user.id,
|
|
84
|
+
email: session.user.email ?? null,
|
|
85
|
+
name: session.user.name ?? "User",
|
|
86
|
+
vendorId: session.user.vendorId ?? null,
|
|
87
|
+
organizationId: orgId ?? defaultOrgId,
|
|
88
|
+
role: role ?? "customer",
|
|
89
|
+
permissions: resolvePermissions(enrichedSession, config),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from "hono";
|
|
2
2
|
import type { CommerceConfig } from "../config/types.js";
|
|
3
3
|
import type { AuthInstance } from "./setup.js";
|
|
4
|
-
export
|
|
4
|
+
export { DEFAULT_CUSTOMER_PERMISSIONS } from "./actor.js";
|
|
5
5
|
export declare function authMiddleware(auth: AuthInstance, config: CommerceConfig): MiddlewareHandler;
|
|
6
6
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAK1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CAiMnB"}
|
package/dist/auth/middleware.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getCustomerPermissions, resolveActor } from "./actor.js";
|
|
1
2
|
import { DEFAULT_ORG_ID } from "./org.js";
|
|
2
3
|
import { isStrictOrgResolution } from "./strict-org-resolution.js";
|
|
3
4
|
function emptyToNull(value) {
|
|
@@ -6,29 +7,9 @@ function emptyToNull(value) {
|
|
|
6
7
|
// Exported so the storefront contract can be pinned by a test: an anonymous
|
|
7
8
|
// visitor resolved by `storeResolver` gets these permissions, so dropping
|
|
8
9
|
// `catalog:read` here would 401 every public storefront read.
|
|
9
|
-
export
|
|
10
|
-
"catalog:read",
|
|
11
|
-
"cart:create",
|
|
12
|
-
"cart:read",
|
|
13
|
-
"cart:update",
|
|
14
|
-
"orders:create",
|
|
15
|
-
"orders:read:own",
|
|
16
|
-
"customers:read:self",
|
|
17
|
-
"customers:update:self",
|
|
18
|
-
];
|
|
19
|
-
function getCustomerPermissions(config) {
|
|
20
|
-
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
21
|
-
}
|
|
10
|
+
export { DEFAULT_CUSTOMER_PERMISSIONS } from "./actor.js";
|
|
22
11
|
const LEGACY_STORE_RESOLVER_WARN_COOLDOWN_MS = 60_000;
|
|
23
12
|
let lastLegacyStoreResolverWarnAt = 0;
|
|
24
|
-
function resolvePermissions(session, config) {
|
|
25
|
-
const role = session.session.activeOrganizationRole;
|
|
26
|
-
if (!role) {
|
|
27
|
-
return getCustomerPermissions(config);
|
|
28
|
-
}
|
|
29
|
-
const roleConfig = config.auth?.roles?.[role];
|
|
30
|
-
return roleConfig ? roleConfig.permissions : [];
|
|
31
|
-
}
|
|
32
13
|
export function authMiddleware(auth, config) {
|
|
33
14
|
return async (c, next) => {
|
|
34
15
|
// Resolve the default org from config, falling back to deprecated constant
|
|
@@ -50,74 +31,9 @@ export function authMiddleware(auth, config) {
|
|
|
50
31
|
}
|
|
51
32
|
}
|
|
52
33
|
}
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (session) {
|
|
57
|
-
// Better Auth's session stores activeOrganizationId, but often not the role.
|
|
58
|
-
// For single-store apps (org_default), users may never call set-active,
|
|
59
|
-
// so activeOrganizationId can be null even for valid org members.
|
|
60
|
-
let role = session.session.activeOrganizationRole;
|
|
61
|
-
let orgId = session.session.activeOrganizationId;
|
|
62
|
-
// If no active org, try to resolve the user's membership in org_default.
|
|
63
|
-
// This handles the common case where the user is a member but hasn't
|
|
64
|
-
// called organization/set-active (single-store apps, seed scripts, tests).
|
|
65
|
-
if (!role && auth.api.getFullOrganization) {
|
|
66
|
-
try {
|
|
67
|
-
const org = await auth.api.getFullOrganization({
|
|
68
|
-
query: { organizationId: orgId ?? defaultOrgId },
|
|
69
|
-
headers: c.req.raw.headers,
|
|
70
|
-
});
|
|
71
|
-
if (org?.members) {
|
|
72
|
-
const membership = org.members.find((m) => m.userId === session.user.id);
|
|
73
|
-
if (membership) {
|
|
74
|
-
role = membership.role;
|
|
75
|
-
orgId = orgId ?? defaultOrgId;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// fall through — treat as customer
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// Also try getActiveMemberRole if active org is set
|
|
84
|
-
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
85
|
-
try {
|
|
86
|
-
const roleResult = await auth.api.getActiveMemberRole({
|
|
87
|
-
headers: c.req.raw.headers,
|
|
88
|
-
});
|
|
89
|
-
role = roleResult?.role;
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// fall through — treat as customer
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// For customers without org membership, resolve the store from the request.
|
|
96
|
-
// This enables multi-store SaaS where each storefront is a different org.
|
|
97
|
-
if (!orgId && config.auth?.storeResolver) {
|
|
98
|
-
try {
|
|
99
|
-
const resolved = await config.auth.storeResolver(c.req.raw);
|
|
100
|
-
if (resolved)
|
|
101
|
-
orgId = resolved;
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// fall through — use defaultOrgId
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const enrichedSession = {
|
|
108
|
-
...session,
|
|
109
|
-
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
110
|
-
};
|
|
111
|
-
c.set("actor", {
|
|
112
|
-
type: "user",
|
|
113
|
-
userId: session.user.id,
|
|
114
|
-
email: session.user.email ?? null,
|
|
115
|
-
name: session.user.name ?? "User",
|
|
116
|
-
vendorId: session.user.vendorId ?? null,
|
|
117
|
-
organizationId: orgId ?? defaultOrgId,
|
|
118
|
-
role: role ?? "customer",
|
|
119
|
-
permissions: resolvePermissions(enrichedSession, config),
|
|
120
|
-
});
|
|
34
|
+
const actor = await resolveActor(c.req.raw.headers, auth, config, c.req.raw);
|
|
35
|
+
if (actor) {
|
|
36
|
+
c.set("actor", actor);
|
|
121
37
|
await next();
|
|
122
38
|
return;
|
|
123
39
|
}
|
package/dist/auth/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAkBrE;;;;;GAKG;AACH,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC;IACjD,OAAO,EAAE;QACP,UAAU,CAAC,OAAO,YAAY,CAAC;QAC/B,UAAU,CAAC,OAAO,MAAM,CAAC;QACzB,UAAU,CAAC,OAAO,GAAG,CAAC;QACtB,UAAU,CAAC,OAAO,SAAS,CAAC;QAC5B,UAAU,CAAC,OAAO,MAAM,CAAC;QACzB,UAAU,CAAC,OAAO,WAAW,CAAC;KAC/B,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAkKd"}
|
package/dist/auth/setup.js
CHANGED
|
@@ -3,6 +3,7 @@ import { betterAuth } from "better-auth";
|
|
|
3
3
|
import { apiKey } from "@better-auth/api-key";
|
|
4
4
|
import { organization, twoFactor, phoneNumber, jwt, bearer } from "better-auth/plugins";
|
|
5
5
|
import * as authSchema from "./auth-schema.js";
|
|
6
|
+
import { AUTH_COOKIE_PREFIX } from "./actor.js";
|
|
6
7
|
function resolveAuthDbProvider(provider) {
|
|
7
8
|
if (provider === "postgres" || provider === "postgresql" || provider === "pg")
|
|
8
9
|
return "pg";
|
|
@@ -125,7 +126,7 @@ export function createAuth(db, config) {
|
|
|
125
126
|
},
|
|
126
127
|
},
|
|
127
128
|
advanced: {
|
|
128
|
-
cookiePrefix:
|
|
129
|
+
cookiePrefix: AUTH_COOKIE_PREFIX,
|
|
129
130
|
useSecureCookies: process.env.NODE_ENV === "production",
|
|
130
131
|
// VAPT r2 (pi) finding: SameSite was never set anywhere. Without it,
|
|
131
132
|
// browsers default to Lax for new cookies, but the explicit setting
|
package/dist/config/types.d.ts
CHANGED
|
@@ -447,6 +447,8 @@ export interface CommerceConfig {
|
|
|
447
447
|
api?: number;
|
|
448
448
|
/** Requests per minute for auth endpoints. Default: 10. */
|
|
449
449
|
auth?: number;
|
|
450
|
+
/** Requests per minute for session reads. Default: 120. */
|
|
451
|
+
session?: number;
|
|
450
452
|
/** Requests per minute for checkout. Default: 5. */
|
|
451
453
|
checkout?: number;
|
|
452
454
|
/** Attempts per 15 minutes for sign-in per email. Default: 10. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export { setupGracefulShutdown } from "./runtime/shutdown.js";
|
|
|
15
15
|
export { createKernel } from "./runtime/kernel.js";
|
|
16
16
|
export type { Kernel } from "./runtime/kernel.js";
|
|
17
17
|
export type { Actor } from "./auth/types.js";
|
|
18
|
+
export { AUTH_COOKIE_PREFIX, resolveActor, SESSION_COOKIE_NAME, } from "./auth/actor.js";
|
|
18
19
|
export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
|
|
19
20
|
export { createSystemActor } from "./auth/system-actor.js";
|
|
20
21
|
export { OrganizationService } from "./modules/organization/service.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { createClientIpResolver } from "./runtime/client-ip.js";
|
|
|
9
9
|
export { createLogger } from "./runtime/logger.js";
|
|
10
10
|
export { setupGracefulShutdown } from "./runtime/shutdown.js";
|
|
11
11
|
export { createKernel } from "./runtime/kernel.js";
|
|
12
|
+
export { AUTH_COOKIE_PREFIX, resolveActor, SESSION_COOKIE_NAME, } from "./auth/actor.js";
|
|
12
13
|
export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
|
|
13
14
|
export { createSystemActor } from "./auth/system-actor.js";
|
|
14
15
|
export { OrganizationService } from "./modules/organization/service.js";
|
|
@@ -11,6 +11,17 @@ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
|
|
|
11
11
|
/**
|
|
12
12
|
* Database instance type for plugin services.
|
|
13
13
|
* This is the Drizzle PgDatabase with an opaque schema record.
|
|
14
|
+
*
|
|
15
|
+
* Tenant scoping depends on which handle you were given, not on this type.
|
|
16
|
+
* `PluginContext.database.db` is wrapped so that `insert`, `select`, `update`
|
|
17
|
+
* and `delete` on any table with an `organizationId` column are constrained to
|
|
18
|
+
* the request's organization. `PluginContext.database.unscoped` and the kernel
|
|
19
|
+
* handle passed to `config.routes` are not wrapped at all.
|
|
20
|
+
*
|
|
21
|
+
* `execute()` is never scoped, on any handle — see the scope-boundary note in
|
|
22
|
+
* `scoped-db.ts`. When you drop to raw SQL, filter by organization yourself and
|
|
23
|
+
* interpolate values as bind parameters (`sql`... ${value}`) rather than
|
|
24
|
+
* through `sql.raw`.
|
|
14
25
|
*/
|
|
15
26
|
export type PluginDb = PgDatabase<PgQueryResultHKT, Record<string, unknown>>;
|
|
16
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/plugin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/plugin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* Plugin route handlers receive this scoped db via PluginContext.database.db
|
|
10
10
|
* (organization resolved per operation from AsyncLocalStorage when used from
|
|
11
11
|
* plugin routes) or a fixed string / getter from router() / tests.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE BOUNDARY — what this does NOT cover:
|
|
14
|
+
*
|
|
15
|
+
* Only `insert`, `select`, `update` and `delete` are wrapped. `execute()` is
|
|
16
|
+
* deliberately outside the boundary: injecting a tenant predicate into
|
|
17
|
+
* arbitrary SQL would mean parsing it, and a parser that is wrong once is worse
|
|
18
|
+
* than no guarantee at all. So `db.execute(sql`...`)` on a scoped handle is
|
|
19
|
+
* exactly as unscoped as one on the raw handle — which is the surprising part,
|
|
20
|
+
* because the caller reached for the safe object and still has to filter by
|
|
21
|
+
* organization themselves.
|
|
22
|
+
*
|
|
23
|
+
* Adding a fifth wrapped method is fine. Adding a raw-SQL rewriter is not.
|
|
12
24
|
*/
|
|
13
25
|
export type ScopedOrganizationId = string | (() => string);
|
|
14
26
|
export declare function createScopedDb<TDb>(rawDb: TDb, orgSource: ScopedOrganizationId): TDb;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/scoped-db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/scoped-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAuD3D,wBAAgB,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,oBAAoB,GAAG,GAAG,CA2GpF"}
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* Plugin route handlers receive this scoped db via PluginContext.database.db
|
|
10
10
|
* (organization resolved per operation from AsyncLocalStorage when used from
|
|
11
11
|
* plugin routes) or a fixed string / getter from router() / tests.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE BOUNDARY — what this does NOT cover:
|
|
14
|
+
*
|
|
15
|
+
* Only `insert`, `select`, `update` and `delete` are wrapped. `execute()` is
|
|
16
|
+
* deliberately outside the boundary: injecting a tenant predicate into
|
|
17
|
+
* arbitrary SQL would mean parsing it, and a parser that is wrong once is worse
|
|
18
|
+
* than no guarantee at all. So `db.execute(sql`...`)` on a scoped handle is
|
|
19
|
+
* exactly as unscoped as one on the raw handle — which is the surprising part,
|
|
20
|
+
* because the caller reached for the safe object and still has to filter by
|
|
21
|
+
* organization themselves.
|
|
22
|
+
*
|
|
23
|
+
* Adding a fifth wrapped method is fine. Adding a raw-SQL rewriter is not.
|
|
12
24
|
*/
|
|
13
25
|
import { and, eq, getTableColumns } from "drizzle-orm";
|
|
14
26
|
function resolveOrganizationId(source) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Result } from "../../kernel/result.js";
|
|
2
|
+
import type { PluginDb } from "../../kernel/database/plugin-types.js";
|
|
2
3
|
export interface SearchDocument {
|
|
3
4
|
id: string;
|
|
4
5
|
organizationId?: string;
|
|
@@ -51,6 +52,10 @@ export interface SearchQueryResult {
|
|
|
51
52
|
}
|
|
52
53
|
export interface SearchAdapter {
|
|
53
54
|
readonly providerId: string;
|
|
55
|
+
/** Called once when the search module wires the adapter to the live database. */
|
|
56
|
+
init?(deps: {
|
|
57
|
+
db: PluginDb;
|
|
58
|
+
}): void;
|
|
54
59
|
index(documents: SearchDocument[]): Promise<Result<void>>;
|
|
55
60
|
remove(ids: string[]): Promise<Result<void>>;
|
|
56
61
|
search(params: SearchQueryParams): Promise<Result<SearchQueryResult>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/modules/search/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/modules/search/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iFAAiF;IACjF,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/search/module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/modules/search/module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,YAAY,2GAqBxB,CAAC"}
|
|
@@ -6,12 +6,14 @@ export const searchModule = defineModule({
|
|
|
6
6
|
schema: () => ({}),
|
|
7
7
|
service: (deps) => {
|
|
8
8
|
const config = deps.config;
|
|
9
|
+
const adapter = config.search?.adapter;
|
|
10
|
+
adapter?.init?.({ db: deps.db.db });
|
|
9
11
|
return new SearchService({
|
|
10
12
|
catalogRepository: deps.services.catalog.repository,
|
|
11
13
|
resolveEntityFieldDefinitions: deps.services.catalog.resolveEntityFieldDefinitions.bind(deps.services.catalog),
|
|
12
14
|
config,
|
|
13
15
|
...(config.entities ? { entities: config.entities } : {}),
|
|
14
|
-
...(
|
|
16
|
+
...(adapter ? { adapter } : {}),
|
|
15
17
|
...(config.search?.defaultFacets
|
|
16
18
|
? { defaultFacets: config.search.defaultFacets }
|
|
17
19
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOtE,KAAK,SAAS,GAAG;IACf,SAAS,EAAE;QACT,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAcvC;AAeD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc;;;;;sBAwWxB,MAAM,UAAU,MAAM;GA8GtD"}
|
package/dist/runtime/server.js
CHANGED
|
@@ -16,6 +16,7 @@ import { rewriteCommerceAliasRequest } from "./url-alias-rewrite.js";
|
|
|
16
16
|
import { mapErrorToResponse } from "../kernel/error-mapper.js";
|
|
17
17
|
import { assertRouteCoverage } from "../interfaces/rest/route-coverage.js";
|
|
18
18
|
import { markRoutePermissionGuard } from "../interfaces/rest/utils.js";
|
|
19
|
+
import { isStrictOrgResolution } from "../auth/strict-org-resolution.js";
|
|
19
20
|
/**
|
|
20
21
|
* Returns true if running in a Node-like runtime that supports
|
|
21
22
|
* `process.on()` + `process.exit()`. Edge runtimes (Cloudflare Workers,
|
|
@@ -212,10 +213,16 @@ export async function createServer(config) {
|
|
|
212
213
|
const signInEmailRateKeyCache = new WeakMap();
|
|
213
214
|
const getClientIp = createClientIpResolver(config);
|
|
214
215
|
const keyGenerator = getClientIp;
|
|
216
|
+
app.use("/api/auth/get-session", rateLimiter({
|
|
217
|
+
windowMs: 60 * 1000,
|
|
218
|
+
limit: config.rateLimits?.session ?? 120,
|
|
219
|
+
keyGenerator,
|
|
220
|
+
}));
|
|
215
221
|
app.use("/api/auth/*", rateLimiter({
|
|
216
222
|
windowMs: 60 * 1000,
|
|
217
223
|
limit: config.rateLimits?.auth ?? 10,
|
|
218
224
|
keyGenerator,
|
|
225
|
+
skip: (c) => c.req.path === "/api/auth/get-session",
|
|
219
226
|
}));
|
|
220
227
|
app.use("/api/auth/sign-in/email", async (c, next) => {
|
|
221
228
|
if (c.req.method !== "POST") {
|
|
@@ -420,6 +427,17 @@ export async function createServer(config) {
|
|
|
420
427
|
"or set config.jobs.autorun.enabled = true for in-process polling.");
|
|
421
428
|
}
|
|
422
429
|
}
|
|
430
|
+
const defaultOrganizationId = config.auth?.defaultOrganizationId;
|
|
431
|
+
const hasDefaultOrganization = typeof defaultOrganizationId === "string" && defaultOrganizationId.trim().length > 0;
|
|
432
|
+
if (isStrictOrgResolution(config) &&
|
|
433
|
+
!hasDefaultOrganization &&
|
|
434
|
+
!config.auth?.storeResolver) {
|
|
435
|
+
throw new Error("Cannot resolve an organization for a request with no actor. Set " +
|
|
436
|
+
"auth.defaultOrganizationId for a single-tenant deployment, or " +
|
|
437
|
+
"auth.storeResolver for a multi-tenant one. To keep the previous " +
|
|
438
|
+
"permissive behaviour during a migration, set " +
|
|
439
|
+
"auth.strictOrgResolution: false (or STRICT_ORG_RESOLUTION=false).");
|
|
440
|
+
}
|
|
423
441
|
assertRouteCoverage(app);
|
|
424
442
|
const dispatchFetch = app.fetch.bind(app);
|
|
425
443
|
app.fetch = ((input, env, executionCtx) => {
|
package/package.json
CHANGED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { AuthSessionLike, CommerceConfig } from "../config/types.js";
|
|
2
|
+
import type { Actor } from "./types.js";
|
|
3
|
+
import type { AuthInstance } from "./setup.js";
|
|
4
|
+
import { DEFAULT_ORG_ID } from "./org.js";
|
|
5
|
+
|
|
6
|
+
export const AUTH_COOKIE_PREFIX = "uc";
|
|
7
|
+
export const SESSION_COOKIE_NAME = `${AUTH_COOKIE_PREFIX}.session_token`;
|
|
8
|
+
|
|
9
|
+
export const DEFAULT_CUSTOMER_PERMISSIONS = [
|
|
10
|
+
"catalog:read",
|
|
11
|
+
"cart:create",
|
|
12
|
+
"cart:read",
|
|
13
|
+
"cart:update",
|
|
14
|
+
"orders:create",
|
|
15
|
+
"orders:read:own",
|
|
16
|
+
"customers:read:self",
|
|
17
|
+
"customers:update:self",
|
|
18
|
+
] as const;
|
|
19
|
+
|
|
20
|
+
export function getCustomerPermissions(config: CommerceConfig): string[] {
|
|
21
|
+
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function resolvePermissions(
|
|
25
|
+
session: AuthSessionLike,
|
|
26
|
+
config: CommerceConfig,
|
|
27
|
+
): string[] {
|
|
28
|
+
const role = session.session.activeOrganizationRole;
|
|
29
|
+
if (!role) return getCustomerPermissions(config);
|
|
30
|
+
const roleConfig = config.auth?.roles?.[role];
|
|
31
|
+
return roleConfig ? roleConfig.permissions : [];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Resolve a better-auth session and its porulle organization permissions. */
|
|
35
|
+
export async function resolveActor(
|
|
36
|
+
headers: Headers,
|
|
37
|
+
auth: AuthInstance,
|
|
38
|
+
config: CommerceConfig,
|
|
39
|
+
request: Request = new Request("http://localhost", { headers }),
|
|
40
|
+
): Promise<Actor | null> {
|
|
41
|
+
let session: AuthSessionLike | null;
|
|
42
|
+
try {
|
|
43
|
+
session = (await auth.api.getSession({
|
|
44
|
+
headers,
|
|
45
|
+
})) as AuthSessionLike | null;
|
|
46
|
+
} catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (!session) return null;
|
|
51
|
+
|
|
52
|
+
const defaultOrgId = config.auth?.defaultOrganizationId ?? DEFAULT_ORG_ID;
|
|
53
|
+
let role = session.session.activeOrganizationRole as string | undefined;
|
|
54
|
+
let orgId = session.session.activeOrganizationId as string | null;
|
|
55
|
+
|
|
56
|
+
if (!role && auth.api.getFullOrganization) {
|
|
57
|
+
try {
|
|
58
|
+
const org = await auth.api.getFullOrganization({
|
|
59
|
+
query: { organizationId: orgId ?? defaultOrgId },
|
|
60
|
+
headers,
|
|
61
|
+
});
|
|
62
|
+
if (org?.members) {
|
|
63
|
+
const membership = org.members.find(
|
|
64
|
+
(m) => m.userId === session.user.id,
|
|
65
|
+
);
|
|
66
|
+
if (membership) {
|
|
67
|
+
role = membership.role;
|
|
68
|
+
orgId = orgId ?? defaultOrgId;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
} catch {
|
|
72
|
+
// fall through — treat as customer
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
77
|
+
try {
|
|
78
|
+
const roleResult = await auth.api.getActiveMemberRole({ headers });
|
|
79
|
+
role = (roleResult as Record<string, unknown>)?.role as
|
|
80
|
+
| string
|
|
81
|
+
| undefined;
|
|
82
|
+
} catch {
|
|
83
|
+
// fall through — treat as customer
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (!orgId && config.auth?.storeResolver) {
|
|
88
|
+
try {
|
|
89
|
+
const resolved = await config.auth.storeResolver(request);
|
|
90
|
+
if (resolved) orgId = resolved;
|
|
91
|
+
} catch {
|
|
92
|
+
// fall through — use defaultOrgId
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const enrichedSession = {
|
|
97
|
+
...session,
|
|
98
|
+
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
type: "user",
|
|
102
|
+
userId: session.user.id,
|
|
103
|
+
email: session.user.email ?? null,
|
|
104
|
+
name: session.user.name ?? "User",
|
|
105
|
+
vendorId: session.user.vendorId ?? null,
|
|
106
|
+
organizationId: orgId ?? defaultOrgId,
|
|
107
|
+
role: role ?? "customer",
|
|
108
|
+
permissions: resolvePermissions(enrichedSession, config),
|
|
109
|
+
} satisfies Actor;
|
|
110
|
+
}
|
package/src/auth/middleware.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from "hono";
|
|
2
|
-
import type {
|
|
2
|
+
import type { CommerceConfig } from "../config/types.js";
|
|
3
3
|
import type { Actor } from "./types.js";
|
|
4
4
|
import type { AuthInstance } from "./setup.js";
|
|
5
|
+
import { getCustomerPermissions, resolveActor } from "./actor.js";
|
|
5
6
|
import { DEFAULT_ORG_ID } from "./org.js";
|
|
6
7
|
import { isStrictOrgResolution } from "./strict-org-resolution.js";
|
|
7
8
|
|
|
@@ -12,37 +13,11 @@ function emptyToNull(value: string | null | undefined): string | null {
|
|
|
12
13
|
// Exported so the storefront contract can be pinned by a test: an anonymous
|
|
13
14
|
// visitor resolved by `storeResolver` gets these permissions, so dropping
|
|
14
15
|
// `catalog:read` here would 401 every public storefront read.
|
|
15
|
-
|
|
16
|
-
export const DEFAULT_CUSTOMER_PERMISSIONS = [
|
|
17
|
-
"catalog:read",
|
|
18
|
-
"cart:create",
|
|
19
|
-
"cart:read",
|
|
20
|
-
"cart:update",
|
|
21
|
-
"orders:create",
|
|
22
|
-
"orders:read:own",
|
|
23
|
-
"customers:read:self",
|
|
24
|
-
"customers:update:self",
|
|
25
|
-
] as const;
|
|
26
|
-
|
|
27
|
-
function getCustomerPermissions(config: CommerceConfig): string[] {
|
|
28
|
-
return config.auth?.customerPermissions ?? [...DEFAULT_CUSTOMER_PERMISSIONS];
|
|
29
|
-
}
|
|
16
|
+
export { DEFAULT_CUSTOMER_PERMISSIONS } from "./actor.js";
|
|
30
17
|
|
|
31
18
|
const LEGACY_STORE_RESOLVER_WARN_COOLDOWN_MS = 60_000;
|
|
32
19
|
let lastLegacyStoreResolverWarnAt = 0;
|
|
33
20
|
|
|
34
|
-
function resolvePermissions(
|
|
35
|
-
session: AuthSessionLike,
|
|
36
|
-
config: CommerceConfig,
|
|
37
|
-
): string[] {
|
|
38
|
-
const role = session.session.activeOrganizationRole;
|
|
39
|
-
if (!role) {
|
|
40
|
-
return getCustomerPermissions(config);
|
|
41
|
-
}
|
|
42
|
-
const roleConfig = config.auth?.roles?.[role];
|
|
43
|
-
return roleConfig ? roleConfig.permissions : [];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
21
|
export function authMiddleware(
|
|
47
22
|
auth: AuthInstance,
|
|
48
23
|
config: CommerceConfig,
|
|
@@ -68,77 +43,14 @@ export function authMiddleware(
|
|
|
68
43
|
}
|
|
69
44
|
}
|
|
70
45
|
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
let role = session.session.activeOrganizationRole as string | undefined;
|
|
80
|
-
let orgId = session.session.activeOrganizationId as string | null;
|
|
81
|
-
|
|
82
|
-
// If no active org, try to resolve the user's membership in org_default.
|
|
83
|
-
// This handles the common case where the user is a member but hasn't
|
|
84
|
-
// called organization/set-active (single-store apps, seed scripts, tests).
|
|
85
|
-
if (!role && auth.api.getFullOrganization) {
|
|
86
|
-
try {
|
|
87
|
-
const org = await auth.api.getFullOrganization({
|
|
88
|
-
query: { organizationId: orgId ?? defaultOrgId },
|
|
89
|
-
headers: c.req.raw.headers,
|
|
90
|
-
});
|
|
91
|
-
if (org?.members) {
|
|
92
|
-
const membership = org.members.find(
|
|
93
|
-
(m) => m.userId === session.user.id,
|
|
94
|
-
);
|
|
95
|
-
if (membership) {
|
|
96
|
-
role = membership.role;
|
|
97
|
-
orgId = orgId ?? defaultOrgId;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
} catch {
|
|
101
|
-
// fall through — treat as customer
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Also try getActiveMemberRole if active org is set
|
|
106
|
-
if (!role && orgId && auth.api.getActiveMemberRole) {
|
|
107
|
-
try {
|
|
108
|
-
const roleResult = await auth.api.getActiveMemberRole({
|
|
109
|
-
headers: c.req.raw.headers,
|
|
110
|
-
});
|
|
111
|
-
role = (roleResult as Record<string, unknown>)?.role as string | undefined;
|
|
112
|
-
} catch {
|
|
113
|
-
// fall through — treat as customer
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// For customers without org membership, resolve the store from the request.
|
|
118
|
-
// This enables multi-store SaaS where each storefront is a different org.
|
|
119
|
-
if (!orgId && config.auth?.storeResolver) {
|
|
120
|
-
try {
|
|
121
|
-
const resolved = await config.auth.storeResolver(c.req.raw);
|
|
122
|
-
if (resolved) orgId = resolved;
|
|
123
|
-
} catch {
|
|
124
|
-
// fall through — use defaultOrgId
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const enrichedSession = {
|
|
129
|
-
...session,
|
|
130
|
-
session: { ...session.session, activeOrganizationRole: role ?? null },
|
|
131
|
-
};
|
|
132
|
-
c.set("actor", {
|
|
133
|
-
type: "user",
|
|
134
|
-
userId: session.user.id,
|
|
135
|
-
email: session.user.email ?? null,
|
|
136
|
-
name: session.user.name ?? "User",
|
|
137
|
-
vendorId: session.user.vendorId ?? null,
|
|
138
|
-
organizationId: orgId ?? defaultOrgId,
|
|
139
|
-
role: role ?? "customer",
|
|
140
|
-
permissions: resolvePermissions(enrichedSession, config),
|
|
141
|
-
} satisfies Actor);
|
|
46
|
+
const actor = await resolveActor(
|
|
47
|
+
c.req.raw.headers,
|
|
48
|
+
auth,
|
|
49
|
+
config,
|
|
50
|
+
c.req.raw,
|
|
51
|
+
);
|
|
52
|
+
if (actor) {
|
|
53
|
+
c.set("actor", actor);
|
|
142
54
|
await next();
|
|
143
55
|
return;
|
|
144
56
|
}
|
package/src/auth/setup.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { organization, twoFactor, phoneNumber, jwt, bearer } from "better-auth/p
|
|
|
6
6
|
import type { CommerceConfig } from "../config/types.js";
|
|
7
7
|
import type { DatabaseAdapter } from "../kernel/database/adapter.js";
|
|
8
8
|
import * as authSchema from "./auth-schema.js";
|
|
9
|
+
import { AUTH_COOKIE_PREFIX } from "./actor.js";
|
|
9
10
|
|
|
10
11
|
type BetterAuthDbProvider = "pg";
|
|
11
12
|
|
|
@@ -178,7 +179,7 @@ export function createAuth(
|
|
|
178
179
|
},
|
|
179
180
|
},
|
|
180
181
|
advanced: {
|
|
181
|
-
cookiePrefix:
|
|
182
|
+
cookiePrefix: AUTH_COOKIE_PREFIX,
|
|
182
183
|
useSecureCookies: process.env.NODE_ENV === "production",
|
|
183
184
|
// VAPT r2 (pi) finding: SameSite was never set anywhere. Without it,
|
|
184
185
|
// browsers default to Lax for new cookies, but the explicit setting
|
package/src/config/types.ts
CHANGED
|
@@ -453,6 +453,8 @@ export interface CommerceConfig {
|
|
|
453
453
|
api?: number;
|
|
454
454
|
/** Requests per minute for auth endpoints. Default: 10. */
|
|
455
455
|
auth?: number;
|
|
456
|
+
/** Requests per minute for session reads. Default: 120. */
|
|
457
|
+
session?: number;
|
|
456
458
|
/** Requests per minute for checkout. Default: 5. */
|
|
457
459
|
checkout?: number;
|
|
458
460
|
/** Attempts per 15 minutes for sign-in per email. Default: 10. */
|
package/src/index.ts
CHANGED
|
@@ -32,6 +32,11 @@ export type { Kernel } from "./runtime/kernel.js";
|
|
|
32
32
|
// This avoids pulling drizzle-kit/tsx/esbuild into Turbopack's bundle graph.
|
|
33
33
|
|
|
34
34
|
export type { Actor } from "./auth/types.js";
|
|
35
|
+
export {
|
|
36
|
+
AUTH_COOKIE_PREFIX,
|
|
37
|
+
resolveActor,
|
|
38
|
+
SESSION_COOKIE_NAME,
|
|
39
|
+
} from "./auth/actor.js";
|
|
35
40
|
export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
|
|
36
41
|
export { createSystemActor } from "./auth/system-actor.js";
|
|
37
42
|
export { OrganizationService } from "./modules/organization/service.js";
|
|
@@ -13,6 +13,17 @@ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
|
|
|
13
13
|
/**
|
|
14
14
|
* Database instance type for plugin services.
|
|
15
15
|
* This is the Drizzle PgDatabase with an opaque schema record.
|
|
16
|
+
*
|
|
17
|
+
* Tenant scoping depends on which handle you were given, not on this type.
|
|
18
|
+
* `PluginContext.database.db` is wrapped so that `insert`, `select`, `update`
|
|
19
|
+
* and `delete` on any table with an `organizationId` column are constrained to
|
|
20
|
+
* the request's organization. `PluginContext.database.unscoped` and the kernel
|
|
21
|
+
* handle passed to `config.routes` are not wrapped at all.
|
|
22
|
+
*
|
|
23
|
+
* `execute()` is never scoped, on any handle — see the scope-boundary note in
|
|
24
|
+
* `scoped-db.ts`. When you drop to raw SQL, filter by organization yourself and
|
|
25
|
+
* interpolate values as bind parameters (`sql`... ${value}`) rather than
|
|
26
|
+
* through `sql.raw`.
|
|
16
27
|
*/
|
|
17
28
|
export type PluginDb = PgDatabase<PgQueryResultHKT, Record<string, unknown>>;
|
|
18
29
|
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* Plugin route handlers receive this scoped db via PluginContext.database.db
|
|
10
10
|
* (organization resolved per operation from AsyncLocalStorage when used from
|
|
11
11
|
* plugin routes) or a fixed string / getter from router() / tests.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE BOUNDARY — what this does NOT cover:
|
|
14
|
+
*
|
|
15
|
+
* Only `insert`, `select`, `update` and `delete` are wrapped. `execute()` is
|
|
16
|
+
* deliberately outside the boundary: injecting a tenant predicate into
|
|
17
|
+
* arbitrary SQL would mean parsing it, and a parser that is wrong once is worse
|
|
18
|
+
* than no guarantee at all. So `db.execute(sql`...`)` on a scoped handle is
|
|
19
|
+
* exactly as unscoped as one on the raw handle — which is the surprising part,
|
|
20
|
+
* because the caller reached for the safe object and still has to filter by
|
|
21
|
+
* organization themselves.
|
|
22
|
+
*
|
|
23
|
+
* Adding a fifth wrapped method is fine. Adding a raw-SQL rewriter is not.
|
|
12
24
|
*/
|
|
13
25
|
|
|
14
26
|
import { and, eq, getTableColumns } from "drizzle-orm";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Result } from "../../kernel/result.js";
|
|
2
|
+
import type { PluginDb } from "../../kernel/database/plugin-types.js";
|
|
2
3
|
|
|
3
4
|
export interface SearchDocument {
|
|
4
5
|
id: string;
|
|
@@ -58,6 +59,8 @@ export interface SearchQueryResult {
|
|
|
58
59
|
|
|
59
60
|
export interface SearchAdapter {
|
|
60
61
|
readonly providerId: string;
|
|
62
|
+
/** Called once when the search module wires the adapter to the live database. */
|
|
63
|
+
init?(deps: { db: PluginDb }): void;
|
|
61
64
|
index(documents: SearchDocument[]): Promise<Result<void>>;
|
|
62
65
|
remove(ids: string[]): Promise<Result<void>>;
|
|
63
66
|
search(params: SearchQueryParams): Promise<Result<SearchQueryResult>>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CommerceConfig } from "../../config/types.js";
|
|
2
|
+
import type { PluginDb } from "../../kernel/database/plugin-types.js";
|
|
2
3
|
import { defineModule } from "../../kernel/module/index.js";
|
|
3
4
|
import type { CatalogServiceImpl } from "../catalog/service.js";
|
|
4
5
|
import { SearchService } from "./service.js";
|
|
@@ -14,12 +15,14 @@ export const searchModule = defineModule<Record<string, never>, SearchService, S
|
|
|
14
15
|
schema: () => ({}),
|
|
15
16
|
service: (deps) => {
|
|
16
17
|
const config = deps.config as CommerceConfig;
|
|
18
|
+
const adapter = config.search?.adapter;
|
|
19
|
+
adapter?.init?.({ db: deps.db.db as PluginDb });
|
|
17
20
|
return new SearchService({
|
|
18
21
|
catalogRepository: deps.services.catalog.repository,
|
|
19
22
|
resolveEntityFieldDefinitions: deps.services.catalog.resolveEntityFieldDefinitions.bind(deps.services.catalog),
|
|
20
23
|
config,
|
|
21
24
|
...(config.entities ? { entities: config.entities } : {}),
|
|
22
|
-
...(
|
|
25
|
+
...(adapter ? { adapter } : {}),
|
|
23
26
|
...(config.search?.defaultFacets
|
|
24
27
|
? { defaultFacets: config.search.defaultFacets }
|
|
25
28
|
: {}),
|
package/src/runtime/server.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { rewriteCommerceAliasRequest } from "./url-alias-rewrite.js";
|
|
|
24
24
|
import { mapErrorToResponse } from "../kernel/error-mapper.js";
|
|
25
25
|
import { assertRouteCoverage } from "../interfaces/rest/route-coverage.js";
|
|
26
26
|
import { markRoutePermissionGuard } from "../interfaces/rest/utils.js";
|
|
27
|
+
import { isStrictOrgResolution } from "../auth/strict-org-resolution.js";
|
|
27
28
|
|
|
28
29
|
type ServerEnv = {
|
|
29
30
|
Variables: {
|
|
@@ -260,10 +261,17 @@ export async function createServer(config: CommerceConfig) {
|
|
|
260
261
|
const getClientIp = createClientIpResolver(config);
|
|
261
262
|
const keyGenerator = getClientIp;
|
|
262
263
|
|
|
264
|
+
app.use("/api/auth/get-session", rateLimiter({
|
|
265
|
+
windowMs: 60 * 1000,
|
|
266
|
+
limit: config.rateLimits?.session ?? 120,
|
|
267
|
+
keyGenerator,
|
|
268
|
+
}));
|
|
269
|
+
|
|
263
270
|
app.use("/api/auth/*", rateLimiter({
|
|
264
271
|
windowMs: 60 * 1000,
|
|
265
272
|
limit: config.rateLimits?.auth ?? 10,
|
|
266
273
|
keyGenerator,
|
|
274
|
+
skip: (c) => c.req.path === "/api/auth/get-session",
|
|
267
275
|
}));
|
|
268
276
|
|
|
269
277
|
app.use("/api/auth/sign-in/email", async (c, next) => {
|
|
@@ -500,6 +508,23 @@ export async function createServer(config: CommerceConfig) {
|
|
|
500
508
|
}
|
|
501
509
|
}
|
|
502
510
|
|
|
511
|
+
const defaultOrganizationId = config.auth?.defaultOrganizationId;
|
|
512
|
+
const hasDefaultOrganization =
|
|
513
|
+
typeof defaultOrganizationId === "string" && defaultOrganizationId.trim().length > 0;
|
|
514
|
+
if (
|
|
515
|
+
isStrictOrgResolution(config) &&
|
|
516
|
+
!hasDefaultOrganization &&
|
|
517
|
+
!config.auth?.storeResolver
|
|
518
|
+
) {
|
|
519
|
+
throw new Error(
|
|
520
|
+
"Cannot resolve an organization for a request with no actor. Set " +
|
|
521
|
+
"auth.defaultOrganizationId for a single-tenant deployment, or " +
|
|
522
|
+
"auth.storeResolver for a multi-tenant one. To keep the previous " +
|
|
523
|
+
"permissive behaviour during a migration, set " +
|
|
524
|
+
"auth.strictOrgResolution: false (or STRICT_ORG_RESOLUTION=false).",
|
|
525
|
+
);
|
|
526
|
+
}
|
|
527
|
+
|
|
503
528
|
assertRouteCoverage(app);
|
|
504
529
|
|
|
505
530
|
const dispatchFetch = app.fetch.bind(app);
|