@unifiedcommerce/core 0.0.2 → 0.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B/C,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CA8GnB"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/auth/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0B/C,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,GACrB,iBAAiB,CA+HnB"}
@@ -23,6 +23,24 @@ export function authMiddleware(auth, config) {
23
23
  headers: c.req.raw.headers,
24
24
  }));
25
25
  if (session) {
26
+ // Better Auth's session only stores activeOrganizationId, not the role.
27
+ // Resolve role via the organization plugin's server-side API when needed.
28
+ let role = session.session.activeOrganizationRole;
29
+ if (!role && session.session.activeOrganizationId && auth.api.getActiveMemberRole) {
30
+ try {
31
+ const roleResult = await auth.api.getActiveMemberRole({
32
+ headers: c.req.raw.headers,
33
+ });
34
+ role = roleResult?.role;
35
+ }
36
+ catch {
37
+ // fall through — treat as customer
38
+ }
39
+ }
40
+ const enrichedSession = {
41
+ ...session,
42
+ session: { ...session.session, activeOrganizationRole: role ?? null },
43
+ };
26
44
  c.set("actor", {
27
45
  type: "user",
28
46
  userId: session.user.id,
@@ -30,8 +48,8 @@ export function authMiddleware(auth, config) {
30
48
  name: session.user.name ?? "User",
31
49
  vendorId: session.user.vendorId ?? null,
32
50
  organizationId: session.session.activeOrganizationId ?? null,
33
- role: session.session.activeOrganizationRole ?? "customer",
34
- permissions: resolvePermissions(session, config),
51
+ role: role ?? "customer",
52
+ permissions: resolvePermissions(enrichedSession, config),
35
53
  });
36
54
  await next();
37
55
  return;
@@ -6,6 +6,9 @@ export interface AuthInstance {
6
6
  getSession(input: {
7
7
  headers: Headers;
8
8
  }): Promise<unknown>;
9
+ getActiveMemberRole?: (input: {
10
+ headers: Headers;
11
+ }) => Promise<unknown>;
9
12
  verifyApiKey?: (input: {
10
13
  body: {
11
14
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAgCrE,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,EAAE;QACH,UAAU,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;aAAE,CAAC;SAC/D,KAAK,OAAO,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC;YACf,KAAK,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBACJ,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,KAAK,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3C,qEAAqE;QACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAgGd"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/auth/setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAgCrE,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,EAAE;QACH,UAAU,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;aAAE,CAAC;SAC/D,KAAK,OAAO,CAAC;YACZ,KAAK,EAAE,OAAO,CAAC;YACf,KAAK,EAAE;gBAAE,OAAO,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;YACrB,IAAI,EAAE;gBACJ,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,KAAK,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3C,qEAAqE;QACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,YAAY,CAgGd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unifiedcommerce/core",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -38,6 +38,23 @@ export function authMiddleware(
38
38
  })) as AuthSessionLike | null;
39
39
 
40
40
  if (session) {
41
+ // Better Auth's session only stores activeOrganizationId, not the role.
42
+ // Resolve role via the organization plugin's server-side API when needed.
43
+ let role = session.session.activeOrganizationRole as string | undefined;
44
+ if (!role && session.session.activeOrganizationId && auth.api.getActiveMemberRole) {
45
+ try {
46
+ const roleResult = await auth.api.getActiveMemberRole({
47
+ headers: c.req.raw.headers,
48
+ });
49
+ role = (roleResult as Record<string, unknown>)?.role as string | undefined;
50
+ } catch {
51
+ // fall through — treat as customer
52
+ }
53
+ }
54
+ const enrichedSession = {
55
+ ...session,
56
+ session: { ...session.session, activeOrganizationRole: role ?? null },
57
+ };
41
58
  c.set("actor", {
42
59
  type: "user",
43
60
  userId: session.user.id,
@@ -45,8 +62,8 @@ export function authMiddleware(
45
62
  name: session.user.name ?? "User",
46
63
  vendorId: session.user.vendorId ?? null,
47
64
  organizationId: session.session.activeOrganizationId ?? null,
48
- role: session.session.activeOrganizationRole ?? "customer",
49
- permissions: resolvePermissions(session, config),
65
+ role: role ?? "customer",
66
+ permissions: resolvePermissions(enrichedSession, config),
50
67
  } satisfies Actor);
51
68
  await next();
52
69
  return;
package/src/auth/setup.ts CHANGED
@@ -40,6 +40,7 @@ export interface AuthInstance {
40
40
  handler(request: Request): Promise<Response>;
41
41
  api: {
42
42
  getSession(input: { headers: Headers }): Promise<unknown>;
43
+ getActiveMemberRole?: (input: { headers: Headers }) => Promise<unknown>;
43
44
  verifyApiKey?: (input: {
44
45
  body: { key: string; permissions?: Record<string, string[]> };
45
46
  }) => Promise<{