@soulcraft/sdk 2.8.0 → 3.0.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.
Files changed (52) hide show
  1. package/dist/modules/auth/backchannel.d.ts +13 -52
  2. package/dist/modules/auth/backchannel.d.ts.map +1 -1
  3. package/dist/modules/auth/backchannel.js +12 -147
  4. package/dist/modules/auth/backchannel.js.map +1 -1
  5. package/dist/modules/auth/middleware.d.ts +45 -185
  6. package/dist/modules/auth/middleware.d.ts.map +1 -1
  7. package/dist/modules/auth/middleware.js +40 -331
  8. package/dist/modules/auth/middleware.js.map +1 -1
  9. package/dist/modules/auth/products.d.ts +1 -1
  10. package/dist/modules/auth/products.js +1 -1
  11. package/dist/modules/auth/request-backchannel.d.ts +39 -6
  12. package/dist/modules/auth/request-backchannel.d.ts.map +1 -1
  13. package/dist/modules/auth/request-backchannel.js +15 -5
  14. package/dist/modules/auth/request-backchannel.js.map +1 -1
  15. package/dist/modules/auth/request-middleware.d.ts +267 -24
  16. package/dist/modules/auth/request-middleware.d.ts.map +1 -1
  17. package/dist/modules/auth/request-middleware.js +264 -23
  18. package/dist/modules/auth/request-middleware.js.map +1 -1
  19. package/dist/modules/auth/service-token.d.ts +8 -7
  20. package/dist/modules/auth/service-token.d.ts.map +1 -1
  21. package/dist/modules/auth/service-token.js +8 -7
  22. package/dist/modules/auth/service-token.js.map +1 -1
  23. package/dist/modules/auth/sveltekit.d.ts +1 -1
  24. package/dist/modules/auth/sveltekit.d.ts.map +1 -1
  25. package/dist/modules/auth/sveltekit.js +1 -1
  26. package/dist/modules/auth/sveltekit.js.map +1 -1
  27. package/dist/namespaces.d.ts +1 -1
  28. package/dist/server/handlers/export.js +1 -1
  29. package/dist/server/handlers/export.js.map +1 -1
  30. package/dist/server/handlers/workspace.d.ts +1 -1
  31. package/dist/server/handlers/workspace.d.ts.map +1 -1
  32. package/dist/server/handlers/workspace.js +3 -4
  33. package/dist/server/handlers/workspace.js.map +1 -1
  34. package/dist/server/index.d.ts +4 -13
  35. package/dist/server/index.d.ts.map +1 -1
  36. package/dist/server/index.js +3 -11
  37. package/dist/server/index.js.map +1 -1
  38. package/dist/server/namespace-router.d.ts +1 -1
  39. package/dist/server/namespace-router.js +1 -1
  40. package/dist/server/rpc-handler.d.ts +2 -9
  41. package/dist/server/rpc-handler.d.ts.map +1 -1
  42. package/dist/server/rpc-handler.js +2 -9
  43. package/dist/server/rpc-handler.js.map +1 -1
  44. package/docs/ADR-001-sdk-design.md +3 -3
  45. package/docs/ADR-004-product-registry.md +1 -1
  46. package/docs/ADR-005-hall-integration.md +1 -1
  47. package/docs/ADR-006-rpc-cache.md +2 -2
  48. package/docs/IMPLEMENTATION-PLAN.md +7 -7
  49. package/docs/KIT-APP-GUIDE.md +100 -99
  50. package/docs/USAGE.md +30 -40
  51. package/docs/kit-sdk-guide.md +59 -60
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMxE,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE;QACH,UAAU,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAAC,OAAO,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG,IAAI,CAAC,CAAA;KACtJ,CAAA;CACF;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;AAExF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAC3C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAA;IACrD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC3D;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,eAAe,CAkEjB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B,GACtC,eAAe,CAsBjB;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,SAA0B,GACnC,eAAe,CAMjB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,SAA4B,GACrC,eAAe,CAMjB"}
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * @module modules/auth/middleware
3
- * @description Hono auth middleware factories, remote session verification, and
4
- * dev/guest session utilities for Soulcraft product backends.
3
+ * @description Session verification factories and shared auth types for Soulcraft
4
+ * product backends.
5
5
  *
6
6
  * ## Session verification strategies
7
7
  *
8
- * All products share the same `createAuthMiddleware` factory, but each product
9
- * selects the right session verifier for its deployment context:
8
+ * All products select the right session verifier for their deployment context:
10
9
  *
11
10
  * ```
12
11
  * Production (all products):
@@ -14,57 +13,45 @@
14
13
  *
15
14
  * Development (all products):
16
15
  * createDevSessionVerifier({ role: 'owner' }) // auto-login, no OAuth needed
17
- *
18
- * Workshop standalone (legacy / local OAuth):
19
- * createAuthMiddleware(betterAuthInstance) // BetterAuthLike overload
20
16
  * ```
21
17
  *
22
- * ## Dev and guest endpoint factories
18
+ * ## Dev and guest cookie verifiers
19
+ *
20
+ * - `createDevCookieVerifier` — reads the dev session cookie issued by
21
+ * `createRequestDevLoginHandler` (from `request-middleware.ts`).
22
+ * - `createGuestCookieVerifier` — reads the guest session cookie issued by
23
+ * `createRequestGuestSessionHandler` (from `request-middleware.ts`).
24
+ *
25
+ * ## Framework-agnostic middleware
23
26
  *
24
- * - `createDevLoginHandler` mounts a `/api/dev/login` endpoint for role-switching
25
- * during development. Issues a signed dev session cookie. No-ops in production.
26
- * - `createGuestSessionHandler` mounts a `/api/guest/session` endpoint so Venue
27
- * visitors can obtain a guest session (platformRole `'guest'`) for anonymous
28
- * browse and booking flows, before they create an account.
27
+ * Use `createRequestAuthMiddleware` from `request-middleware.ts` for the
28
+ * framework-agnostic middleware that works with any Web Standard Request/Response
29
+ * server (SvelteKit, Bun, Deno, Cloudflare Workers, etc.).
29
30
  *
30
31
  * @example Production setup (Venue / Academy)
31
32
  * ```typescript
32
- * import { createAuthMiddleware, createRemoteSessionVerifier } from '@soulcraft/sdk/server'
33
+ * import {
34
+ * createRequestAuthMiddleware,
35
+ * createRemoteSessionVerifier,
36
+ * getUser,
37
+ * } from '@soulcraft/sdk/server'
33
38
  *
34
39
  * const verifySession = createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL! })
35
- * const { requireAuth, optionalAuth } = createAuthMiddleware(verifySession)
40
+ * const { requireAuth } = createRequestAuthMiddleware(verifySession)
36
41
  *
37
- * app.get('/api/bookings', requireAuth, async (c) => {
38
- * const user = c.get('user')! // SoulcraftSessionUser
39
- * })
42
+ * // SvelteKit hooks:
43
+ * export const handle = async ({ event, resolve }) => {
44
+ * const response = await requireAuth(event.request, () => resolve(event))
45
+ * event.locals.user = getUser(event.request)
46
+ * return response
47
+ * }
40
48
  * ```
41
49
  */
42
50
  import { LRUCache } from 'lru-cache';
43
51
  import { computeEmailHash } from './config.js';
44
52
  // ─────────────────────────────────────────────────────────────────────────────
45
- // Types
46
- // ─────────────────────────────────────────────────────────────────────────────
47
- /** The Hono context variable key where the resolved user is stored. */
48
- export const AUTH_USER_KEY = 'user';
49
- // ─────────────────────────────────────────────────────────────────────────────
50
53
  // Shared internal helpers
51
54
  // ─────────────────────────────────────────────────────────────────────────────
52
- /** Resolve a raw user record from a better-auth session into a `SoulcraftSessionUser`. */
53
- function _resolveUser(raw) {
54
- const email = String(raw['email'] ?? '');
55
- const emailHash = raw['emailHash']
56
- ? String(raw['emailHash'])
57
- : computeEmailHash(email);
58
- return {
59
- id: String(raw['id'] ?? ''),
60
- email,
61
- name: String(raw['name'] ?? ''),
62
- image: raw['image'] ?? null,
63
- platformRole: raw['platformRole'] ?? 'creator',
64
- emailHash,
65
- ...(raw['handle'] ? { handle: String(raw['handle']) } : {}),
66
- };
67
- }
68
55
  /** Parse a simple `name=value` cookie from a raw cookie header string. */
69
56
  function _parseCookie(cookieHeader, name) {
70
57
  for (const part of cookieHeader.split(';')) {
@@ -74,10 +61,6 @@ function _parseCookie(cookieHeader, name) {
74
61
  }
75
62
  return undefined;
76
63
  }
77
- /** Encode a dev/guest session payload as a compact JSON+base64url string (unsigned). */
78
- function _encodeSessionCookie(session) {
79
- return Buffer.from(JSON.stringify(session)).toString('base64url');
80
- }
81
64
  /** Decode a session payload encoded by `_encodeSessionCookie`. Returns null on any error. */
82
65
  function _decodeSessionCookie(value) {
83
66
  try {
@@ -93,111 +76,6 @@ function _decodeSessionCookie(value) {
93
76
  }
94
77
  }
95
78
  // ─────────────────────────────────────────────────────────────────────────────
96
- // createAuthMiddleware
97
- // ─────────────────────────────────────────────────────────────────────────────
98
- /**
99
- * Creates Hono auth middleware from a `SessionVerifier` function or a `BetterAuthLike`
100
- * instance.
101
- *
102
- * **Preferred form (all products in OIDC-client mode):**
103
- * Pass a `SessionVerifier` returned by `createRemoteSessionVerifier` or
104
- * `createDevSessionVerifier`. The middleware reads the request cookie header and
105
- * passes it to the verifier.
106
- *
107
- * **Legacy form (Workshop standalone mode):**
108
- * Pass a `better-auth` instance directly. The middleware calls `auth.api.getSession`.
109
- * In non-production environments and when `devAutoLogin` is enabled, a synthetic dev
110
- * user is injected on failed lookups so local dev works without OAuth.
111
- *
112
- * Both forms return identical `{ requireAuth, optionalAuth }` middleware.
113
- *
114
- * @param authOrVerifier - A `better-auth` instance or a `SessionVerifier` function.
115
- * @param options - Optional middleware configuration (only applies to `BetterAuthLike` form).
116
- * @returns Middleware pair: `{ requireAuth, optionalAuth }`.
117
- *
118
- * @example Verifier form (Venue / Academy / Workshop in OIDC mode)
119
- * ```typescript
120
- * const verifySession = createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL! })
121
- * const { requireAuth } = createAuthMiddleware(verifySession)
122
- * ```
123
- *
124
- * @deprecated Use `createRequestAuthMiddleware` from `request-middleware.ts` instead.
125
- * The Hono-specific middleware will be removed in a future major version.
126
- *
127
- * @example BetterAuth form (Workshop dev standalone)
128
- * ```typescript
129
- * import { auth } from './better-auth.js'
130
- * const { requireAuth } = createAuthMiddleware(auth)
131
- * ```
132
- */
133
- export function createAuthMiddleware(authOrVerifier, options = {}) {
134
- const isVerifier = typeof authOrVerifier === 'function';
135
- if (isVerifier) {
136
- const verify = authOrVerifier;
137
- const requireAuth = async (c, next) => {
138
- const cookieHeader = c.req.header('cookie') ?? '';
139
- const session = await verify(cookieHeader);
140
- if (!session)
141
- return c.json({ error: 'Authentication required' }, 401);
142
- c.set(AUTH_USER_KEY, session.user);
143
- await next();
144
- return;
145
- };
146
- const optionalAuth = async (c, next) => {
147
- const cookieHeader = c.req.header('cookie') ?? '';
148
- const session = await verify(cookieHeader);
149
- c.set(AUTH_USER_KEY, session?.user ?? null);
150
- await next();
151
- };
152
- return { requireAuth, optionalAuth };
153
- }
154
- // BetterAuthLike form (Workshop standalone)
155
- const auth = authOrVerifier;
156
- const devAutoLogin = options.devAutoLogin ?? true;
157
- const isDev = process.env['NODE_ENV'] !== 'production';
158
- const DEV_USER = {
159
- id: 'dev-user-001',
160
- email: 'dev@localhost',
161
- name: 'Dev User',
162
- image: null,
163
- emailHash: computeEmailHash('dev@localhost'),
164
- platformRole: 'creator',
165
- handle: 'dev',
166
- };
167
- const requireAuth = async (c, next) => {
168
- if (isDev && devAutoLogin) {
169
- if (!c.get(AUTH_USER_KEY))
170
- c.set(AUTH_USER_KEY, DEV_USER);
171
- await next();
172
- return;
173
- }
174
- const session = await auth.api.getSession({ headers: c.req.raw.headers });
175
- if (!session?.user) {
176
- return c.json({ error: 'Authentication required' }, 401);
177
- }
178
- c.set(AUTH_USER_KEY, _resolveUser(session.user));
179
- await next();
180
- return;
181
- };
182
- const optionalAuth = async (c, next) => {
183
- if (isDev && devAutoLogin) {
184
- if (!c.get(AUTH_USER_KEY))
185
- c.set(AUTH_USER_KEY, DEV_USER);
186
- await next();
187
- return;
188
- }
189
- const session = await auth.api.getSession({ headers: c.req.raw.headers });
190
- if (session?.user) {
191
- c.set(AUTH_USER_KEY, _resolveUser(session.user));
192
- }
193
- else {
194
- c.set(AUTH_USER_KEY, null);
195
- }
196
- await next();
197
- };
198
- return { requireAuth, optionalAuth };
199
- }
200
- // ─────────────────────────────────────────────────────────────────────────────
201
79
  // createRemoteSessionVerifier
202
80
  // ─────────────────────────────────────────────────────────────────────────────
203
81
  /**
@@ -211,10 +89,10 @@ export function createAuthMiddleware(authOrVerifier, options = {}) {
211
89
  * The verifier sends the cookie header to the IdP's `/api/auth/get-session` endpoint
212
90
  * and returns the resolved `SoulcraftSession` or `null` if the session is invalid.
213
91
  *
214
- * Pass the returned function directly to `createAuthMiddleware`:
92
+ * Pass the returned function to `createRequestAuthMiddleware`:
215
93
  * ```typescript
216
94
  * const verifySession = createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL! })
217
- * const { requireAuth } = createAuthMiddleware(verifySession)
95
+ * const { requireAuth } = createRequestAuthMiddleware(verifySession)
218
96
  * ```
219
97
  *
220
98
  * @param options - IdP URL, cache TTL, and max cache size.
@@ -227,8 +105,8 @@ export function createAuthMiddleware(authOrVerifier, options = {}) {
227
105
  * cacheTtlMs: 30_000,
228
106
  * })
229
107
  *
230
- * const session = await verifySession(c.req.header('cookie') ?? '')
231
- * if (!session) return c.json({ error: 'Unauthorized' }, 401)
108
+ * const session = await verifySession(request.headers.get('cookie') ?? '')
109
+ * if (!session) return new Response('Unauthorized', { status: 401 })
232
110
  * ```
233
111
  */
234
112
  export function createRemoteSessionVerifier(options) {
@@ -309,7 +187,7 @@ export function createRemoteSessionVerifier(options) {
309
187
  * ? createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL })
310
188
  * : createDevSessionVerifier({ role: 'owner' })
311
189
  *
312
- * const { requireAuth } = createAuthMiddleware(verifySession)
190
+ * const { requireAuth } = createRequestAuthMiddleware(verifySession)
313
191
  * ```
314
192
  *
315
193
  * **Never use in production.** The verifier performs no validation whatsoever.
@@ -352,93 +230,12 @@ export function createDevSessionVerifier(options = {}) {
352
230
  };
353
231
  }
354
232
  // ─────────────────────────────────────────────────────────────────────────────
355
- // createDevLoginHandler
356
- // ─────────────────────────────────────────────────────────────────────────────
357
- /**
358
- * Creates a Hono request handler for a dev login endpoint.
359
- *
360
- * Mount at `/api/dev/login` to get a role-switching endpoint for local
361
- * development. Accepts `?role=<platformRole>` and optional `?email=` / `?name=`
362
- * query params. Issues a signed base64url session cookie that `createAuthMiddleware`
363
- * (when used with a `SessionVerifier` that reads dev cookies) can resolve.
364
- *
365
- * **Guards against production use:** the handler returns HTTP 404 when
366
- * `NODE_ENV === 'production'` — it is safe to leave mounted in all environments.
367
- *
368
- * @param options - Allowed roles, cookie name, and max-age.
369
- * @returns A Hono-compatible request handler `(c: HonoContext) => Response`.
370
- *
371
- * @deprecated Use `createRequestDevLoginHandler` from `request-middleware.ts` instead.
372
- * The Hono-specific handler will be removed in a future major version.
373
- *
374
- * @example
375
- * ```typescript
376
- * import { createDevLoginHandler } from '@soulcraft/sdk/server'
377
- *
378
- * // In your Hono server setup:
379
- * app.get('/api/dev/login', createDevLoginHandler({ allowedRoles: ['owner', 'staff', 'customer'] }))
380
- *
381
- * // Usage: GET /api/dev/login?role=staff → sets cookie + redirects to /
382
- * ```
383
- */
384
- export function createDevLoginHandler(options = {}) {
385
- const DEFAULT_ROLES = [
386
- 'creator', 'viewer', 'customer', 'staff', 'manager', 'owner', 'learner', 'instructor',
387
- ];
388
- const allowedRoles = options.allowedRoles ?? DEFAULT_ROLES;
389
- const cookieName = options.cookieName ?? 'soulcraft_dev_session';
390
- const maxAgeSeconds = options.maxAgeSeconds ?? 86_400;
391
- return function devLoginHandler(c) {
392
- if (process.env['NODE_ENV'] === 'production') {
393
- return c.json({ error: 'Not found' }, 404);
394
- }
395
- const role = c.req.query('role');
396
- if (!role || !allowedRoles.includes(role)) {
397
- return c.json({
398
- error: `Invalid role. Allowed: ${allowedRoles.join(', ')}`,
399
- allowedRoles,
400
- }, 400);
401
- }
402
- const email = c.req.query('email') ?? `dev-${role}@soulcraft.com`;
403
- const name = c.req.query('name') ?? `Dev ${role.charAt(0).toUpperCase() + role.slice(1)}`;
404
- const redirect = c.req.query('redirect') ?? '/';
405
- const session = {
406
- user: {
407
- id: `dev-user-${role}`,
408
- email,
409
- name,
410
- image: null,
411
- platformRole: role,
412
- emailHash: computeEmailHash(email),
413
- },
414
- sessionId: `dev-session-${Date.now()}`,
415
- expiresAt: Date.now() + maxAgeSeconds * 1000,
416
- };
417
- const cookieValue = _encodeSessionCookie(session);
418
- const cookieHeader = [
419
- `${cookieName}=${cookieValue}`,
420
- `Path=/`,
421
- `HttpOnly`,
422
- `SameSite=Lax`,
423
- `Max-Age=${maxAgeSeconds}`,
424
- ].join('; ');
425
- const response = new Response(null, {
426
- status: 302,
427
- headers: {
428
- Location: redirect,
429
- 'Set-Cookie': cookieHeader,
430
- },
431
- });
432
- return response;
433
- };
434
- }
435
- // ─────────────────────────────────────────────────────────────────────────────
436
233
  // createDevCookieVerifier
437
234
  // ─────────────────────────────────────────────────────────────────────────────
438
235
  /**
439
- * Creates a session verifier that reads the cookie issued by `createDevLoginHandler`.
236
+ * Creates a session verifier that reads the cookie issued by `createRequestDevLoginHandler`.
440
237
  *
441
- * Use this together with `createDevLoginHandler` when you want dev role-switching
238
+ * Use this together with `createRequestDevLoginHandler` when you want dev role-switching
442
239
  * (e.g. clicking "Login as Staff" in a dev UI) rather than a fixed synthetic user.
443
240
  *
444
241
  * The verifier decodes the base64url cookie value and returns the embedded session.
@@ -451,12 +248,12 @@ export function createDevLoginHandler(options = {}) {
451
248
  * const verifySession = createDevSessionVerifier({ role: 'owner' })
452
249
  *
453
250
  * // Option B: Role-switching dev login UI
454
- * app.get('/api/dev/login', createDevLoginHandler({ allowedRoles: ['owner', 'staff', 'customer'] }))
251
+ * const loginHandler = createRequestDevLoginHandler({ allowedRoles: ['owner', 'staff', 'customer'] })
455
252
  * const verifySession = createDevCookieVerifier()
456
253
  * ```
457
254
  *
458
- * @param cookieName - Must match the `cookieName` passed to `createDevLoginHandler`. Default: `'soulcraft_dev_session'`.
459
- * @returns A `SessionVerifier` compatible with `createAuthMiddleware`.
255
+ * @param cookieName - Must match the `cookieName` passed to `createRequestDevLoginHandler`. Default: `'soulcraft_dev_session'`.
256
+ * @returns A `SessionVerifier` compatible with `createRequestAuthMiddleware`.
460
257
  */
461
258
  export function createDevCookieVerifier(cookieName = 'soulcraft_dev_session') {
462
259
  return async function verifyDevCookie(cookieHeader) {
@@ -467,98 +264,10 @@ export function createDevCookieVerifier(cookieName = 'soulcraft_dev_session') {
467
264
  };
468
265
  }
469
266
  // ─────────────────────────────────────────────────────────────────────────────
470
- // createGuestSessionHandler
471
- // ─────────────────────────────────────────────────────────────────────────────
472
- /**
473
- * Creates a Hono request handler that issues a guest session cookie.
474
- *
475
- * Venue visitors can browse and initiate bookings without creating an account.
476
- * This handler mounts at e.g. `/api/guest/session` and issues a session cookie
477
- * with `platformRole: 'guest'` and a unique guest ID on each call (if no valid
478
- * guest session already exists).
479
- *
480
- * The guest session cookie can be verified using `createGuestCookieVerifier`,
481
- * which returns a `SessionVerifier` compatible with `createAuthMiddleware`.
482
- *
483
- * @param options - Cookie name, max-age, and optional `onGuestCreated` callback.
484
- * @returns A Hono-compatible request handler.
485
- *
486
- * @deprecated Use `createRequestGuestSessionHandler` from `request-middleware.ts` instead.
487
- * The Hono-specific handler will be removed in a future major version.
488
- *
489
- * @example
490
- * ```typescript
491
- * import { createGuestSessionHandler, createGuestCookieVerifier, createAuthMiddleware } from '@soulcraft/sdk/server'
492
- *
493
- * // Issue guest sessions
494
- * app.post('/api/guest/session', createGuestSessionHandler({
495
- * onGuestCreated: async (guestId) => {
496
- * await db.guests.insert({ id: guestId, createdAt: new Date() })
497
- * },
498
- * }))
499
- *
500
- * // Verify guest sessions in optional auth (guests can browse)
501
- * const verifyGuest = createGuestCookieVerifier()
502
- * const verifySession = createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL! })
503
- *
504
- * // Compose: check real session first, fall back to guest
505
- * const { optionalAuth } = createAuthMiddleware(async (cookie) =>
506
- * await verifySession(cookie) ?? await verifyGuest(cookie)
507
- * )
508
- * ```
509
- */
510
- export function createGuestSessionHandler(options = {}) {
511
- const cookieName = options.cookieName ?? 'soulcraft_guest_session';
512
- const maxAgeSeconds = options.maxAgeSeconds ?? 3_600;
513
- const onGuestCreated = options.onGuestCreated;
514
- return async function guestSessionHandler(c) {
515
- // Return existing guest session if still valid
516
- const cookieHeader = c.req.header('cookie') ?? '';
517
- const existingValue = _parseCookie(cookieHeader, cookieName);
518
- if (existingValue) {
519
- const existing = _decodeSessionCookie(existingValue);
520
- if (existing)
521
- return c.json({ guestId: existing.user.id, existing: true });
522
- }
523
- // Create a new guest session
524
- const guestId = `guest-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
525
- const email = `${guestId}@guest.soulcraft.com`;
526
- const session = {
527
- user: {
528
- id: guestId,
529
- email,
530
- name: 'Guest',
531
- image: null,
532
- platformRole: 'guest',
533
- emailHash: computeEmailHash(email),
534
- },
535
- sessionId: `guest-session-${Date.now()}`,
536
- expiresAt: Date.now() + maxAgeSeconds * 1000,
537
- };
538
- if (onGuestCreated)
539
- await onGuestCreated(guestId);
540
- const cookieValue = _encodeSessionCookie(session);
541
- const cookieHeader2 = [
542
- `${cookieName}=${cookieValue}`,
543
- `Path=/`,
544
- `HttpOnly`,
545
- `SameSite=Lax`,
546
- `Max-Age=${maxAgeSeconds}`,
547
- ].join('; ');
548
- return new Response(JSON.stringify({ guestId, existing: false }), {
549
- status: 200,
550
- headers: {
551
- 'Content-Type': 'application/json',
552
- 'Set-Cookie': cookieHeader2,
553
- },
554
- });
555
- };
556
- }
557
- // ─────────────────────────────────────────────────────────────────────────────
558
267
  // createGuestCookieVerifier
559
268
  // ─────────────────────────────────────────────────────────────────────────────
560
269
  /**
561
- * Creates a session verifier that reads the cookie issued by `createGuestSessionHandler`.
270
+ * Creates a session verifier that reads the cookie issued by `createRequestGuestSessionHandler`.
562
271
  *
563
272
  * Returns the guest `SoulcraftSession` or `null` if no valid guest cookie is present.
564
273
  * Compose with `createRemoteSessionVerifier` to allow both authenticated and guest access:
@@ -567,13 +276,13 @@ export function createGuestSessionHandler(options = {}) {
567
276
  * const verifyReal = createRemoteSessionVerifier({ idpUrl: process.env.SOULCRAFT_IDP_URL! })
568
277
  * const verifyGuest = createGuestCookieVerifier()
569
278
  *
570
- * const { optionalAuth } = createAuthMiddleware(async (cookie) =>
279
+ * const { optionalAuth } = createRequestAuthMiddleware(async (cookie) =>
571
280
  * await verifyReal(cookie) ?? await verifyGuest(cookie)
572
281
  * )
573
282
  * ```
574
283
  *
575
- * @param cookieName - Must match the `cookieName` passed to `createGuestSessionHandler`. Default: `'soulcraft_guest_session'`.
576
- * @returns A `SessionVerifier` compatible with `createAuthMiddleware`.
284
+ * @param cookieName - Must match the `cookieName` passed to `createRequestGuestSessionHandler`. Default: `'soulcraft_guest_session'`.
285
+ * @returns A `SessionVerifier` compatible with `createRequestAuthMiddleware`.
577
286
  */
578
287
  export function createGuestCookieVerifier(cookieName = 'soulcraft_guest_session') {
579
288
  return async function verifyGuestCookie(cookieHeader) {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/modules/auth/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/modules/auth/middleware.ts"],"names":[],"mappings":"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"}
@@ -168,7 +168,7 @@ export type SoulcraftProduct = keyof typeof SOULCRAFT_PRODUCTS;
168
168
  *
169
169
  * Used by the auth server for:
170
170
  * - `betterAuth({ trustedOrigins: deriveOrigins() })` — callback URL validation
171
- * - `cors({ origin: deriveOrigins() })` — CORS preflight on the Hono layer
171
+ * - CORS origin allowlist for preflight validation
172
172
  *
173
173
  * @returns Deduplicated list of origin strings (scheme + host, no trailing slash).
174
174
  *
@@ -114,7 +114,7 @@ export const SOULCRAFT_PRODUCTS = {
114
114
  *
115
115
  * Used by the auth server for:
116
116
  * - `betterAuth({ trustedOrigins: deriveOrigins() })` — callback URL validation
117
- * - `cors({ origin: deriveOrigins() })` — CORS preflight on the Hono layer
117
+ * - CORS origin allowlist for preflight validation
118
118
  *
119
119
  * @returns Deduplicated list of origin strings (scheme + host, no trailing slash).
120
120
  *
@@ -3,10 +3,20 @@
3
3
  * @description Framework-agnostic OIDC back-channel logout handler using Web Standard
4
4
  * Request/Response.
5
5
  *
6
- * Drop-in replacement for the Hono-based handler in `backchannel.ts`. Implements the
7
- * same OpenID Connect Back-Channel Logout 1.0 verification HS256 JWT signature
8
- * validation via Web Crypto API, standard claim checks (`iss`, `aud`, `events`),
9
- * and session revocation via the better-auth API.
6
+ * Implements the OpenID Connect Back-Channel Logout 1.0 specification. When a user
7
+ * signs out of the central IdP (`auth.soulcraft.com`), the IdP POSTs a signed
8
+ * `logout_token` (HS256 JWT) to every registered product's back-channel logout
9
+ * endpoint. This handler verifies the token and deletes all active sessions for
10
+ * the identified user, ensuring immediate logout across all products.
11
+ *
12
+ * ## Protocol
13
+ *
14
+ * 1. IdP POSTs `application/x-www-form-urlencoded` body with `logout_token` field
15
+ * 2. Handler verifies HS256 JWT signature using the OIDC client secret
16
+ * 3. Handler validates standard claims: `iss`, `aud`, `events` (must contain
17
+ * `http://schemas.openid.net/event/backchannel-logout`)
18
+ * 4. Handler deletes all better-auth sessions for the `sub` (user ID) claim
19
+ * 5. Returns 200 on success, 400 for malformed tokens, 401 for bad signatures
10
20
  *
11
21
  * ## Mounting
12
22
  *
@@ -24,12 +34,35 @@
24
34
  * // Bun: if (url.pathname === '/api/auth/backchannel-logout') return handleLogout(req)
25
35
  * ```
26
36
  */
27
- import type { BackchannelLogoutConfig } from './backchannel.js';
37
+ /** Minimal better-auth API surface needed for session deletion. */
38
+ export interface BackchannelAuthLike {
39
+ api: {
40
+ revokeUserSessions(opts: {
41
+ body: {
42
+ userId: string;
43
+ };
44
+ headers?: Headers;
45
+ }): Promise<unknown>;
46
+ };
47
+ }
48
+ /**
49
+ * @description Configuration for `createRequestBackchannelLogoutHandler()`.
50
+ */
51
+ export interface BackchannelLogoutConfig {
52
+ /** The product's better-auth instance (used to delete sessions). */
53
+ auth: BackchannelAuthLike;
54
+ /** This product's OIDC client secret — used to verify the logout_token signature. */
55
+ clientSecret: string;
56
+ /** The central IdP base URL — used to validate the `iss` claim. */
57
+ idpUrl: string;
58
+ /** This product's OIDC client ID — used to validate the `aud` claim. */
59
+ clientId: string;
60
+ }
28
61
  /**
29
62
  * @description Creates a framework-agnostic request handler for the OIDC back-channel
30
63
  * logout endpoint.
31
64
  *
32
- * Web Standard equivalent of `createBackchannelLogoutHandler`. The handler:
65
+ * The handler:
33
66
  * 1. Parses the `logout_token` from the form-encoded or JSON body
34
67
  * 2. Verifies the HS256 JWT signature using the OIDC client secret
35
68
  * 3. Validates `iss` (must match idpUrl), `aud` (must match clientId),
@@ -1 +1 @@
1
- {"version":3,"file":"request-backchannel.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/request-backchannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AA0E/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,uBAAuB,GAC9B,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA4FrC"}
1
+ {"version":3,"file":"request-backchannel.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/request-backchannel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE;QACH,kBAAkB,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;KAC5F,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,IAAI,EAAE,mBAAmB,CAAA;IACzB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAA;IACpB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;CACjB;AA0ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,uBAAuB,GAC9B,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA4FrC"}