@soulcraft/sdk 3.7.6 → 3.8.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.
@@ -3,22 +3,18 @@
3
3
  * @description Opinionated SvelteKit auth integration for Soulcraft products.
4
4
  *
5
5
  * `createSoulcraftAuth()` returns everything a SvelteKit product needs for auth:
6
- * a `Handle` hook, a backchannel-logout request handler, and a logout request handler.
7
- * One function, zero choices.
6
+ * a `Handle` hook and a logout handler. One function, zero choices.
8
7
  *
9
8
  * ## What it does
10
9
  *
11
- * - **Session resolution** — reads the IdP cross-domain cookie, verifies via
12
- * `createRemoteSessionVerifier` (30s LRU cache) in production or
10
+ * - **Session resolution** — reads the `.soulcraft.com` session cookie, verifies
11
+ * via `createRemoteSessionVerifier` (30s LRU cache) in production or
13
12
  * `createDevCookieVerifier` in dev mode
14
13
  * - **Stale cookie recovery** — detects "cookie present but session null" and
15
14
  * clears the stale cookie via `Set-Cookie: Max-Age=0`, breaking redirect loops
16
- * - **CSRF bypass** — rewrites the `origin` header for `POST /api/auth/backchannel-logout`
17
- * so SvelteKit's built-in CSRF check doesn't block server-to-server IdP calls
18
15
  * - **User enrichment** — optional `enrichUser` callback for product-specific
19
16
  * role resolution (e.g. Venue staff lookup, Portal admin check)
20
- * - **Backchannel logout** — verifies the HS256 JWT logout token from the IdP
21
- * - **Logout** — clears local cookies and returns the IdP end-session URL
17
+ * - **Logout** — clears local cookies, calls auth.soulcraft.com/api/auth/sign-out
22
18
  *
23
19
  * ## Usage
24
20
  *
@@ -29,9 +25,6 @@
29
25
  * const auth = createSoulcraftAuth({ product: 'venue' })
30
26
  * export const handle = auth.handle
31
27
  *
32
- * // routes/api/auth/backchannel-logout/+server.ts
33
- * export const POST = auth.backchannelHandler
34
- *
35
28
  * // routes/api/auth/logout/+server.ts
36
29
  * export const POST = auth.logoutHandler
37
30
  * ```
@@ -88,8 +81,8 @@ export interface SoulcraftAuthOptions {
88
81
  /**
89
82
  * Optional session verifier override. When omitted, the verifier is
90
83
  * auto-selected based on environment:
91
- * - `SOULCRAFT_IDP_URL` set → `createRemoteSessionVerifier`
92
- * - `SOULCRAFT_IDP_URL` unset → `createDevCookieVerifier`
84
+ * - `SOULCRAFT_AUTH_URL` set → `createRemoteSessionVerifier`
85
+ * - `SOULCRAFT_AUTH_URL` unset → `createDevCookieVerifier`
93
86
  */
94
87
  verifier?: SessionVerifier;
95
88
  /**
@@ -117,12 +110,6 @@ export interface SoulcraftAuthOptions {
117
110
  * `/api/dev/login` in the product. Default: `'soulcraft_dev_session'`.
118
111
  */
119
112
  devCookieName?: string;
120
- /**
121
- * Path prefix for the backchannel-logout endpoint. The CSRF bypass
122
- * rewrites the origin header for POST requests to this path.
123
- * Default: `'/api/auth/backchannel-logout'`.
124
- */
125
- backchannelPath?: string;
126
113
  /**
127
114
  * Default role for auto-login in dev mode. When set and no `SOULCRAFT_IDP_URL`
128
115
  * is configured, the auth handle automatically creates a dev session on the
@@ -140,8 +127,7 @@ export interface SoulcraftAuthOptions {
140
127
  */
141
128
  export interface SoulcraftAuth {
142
129
  /**
143
- * SvelteKit `Handle` hook that resolves sessions, clears stale cookies,
144
- * and bypasses CSRF for the backchannel-logout endpoint.
130
+ * SvelteKit `Handle` hook that resolves sessions and clears stale cookies.
145
131
  *
146
132
  * Use with `sequence()` if you have other hooks:
147
133
  * ```typescript
@@ -149,20 +135,6 @@ export interface SoulcraftAuth {
149
135
  * ```
150
136
  */
151
137
  handle: SvelteKitHandle;
152
- /**
153
- * SvelteKit request handler for `POST /api/auth/backchannel-logout`.
154
- *
155
- * Verifies the HS256 JWT logout token from the IdP. Returns 200 on
156
- * success, 400 for malformed tokens. Since SvelteKit products hold no
157
- * local sessions (auth state lives at the IdP), this endpoint only
158
- * verifies the token and acknowledges receipt.
159
- *
160
- * Mount in `routes/api/auth/backchannel-logout/+server.ts`:
161
- * ```typescript
162
- * export const POST = auth.backchannelHandler
163
- * ```
164
- */
165
- backchannelHandler: SvelteKitRequestHandler;
166
138
  /**
167
139
  * SvelteKit request handler for `POST /api/auth/logout`.
168
140
  *
@@ -176,12 +148,48 @@ export interface SoulcraftAuth {
176
148
  * ```
177
149
  */
178
150
  logoutHandler: SvelteKitRequestHandler;
151
+ /**
152
+ * SvelteKit request handler for `GET /auth/start`.
153
+ *
154
+ * Initiates the login flow. In dev mode, redirects to `/api/dev/login`.
155
+ * In production, redirects to `auth.soulcraft.com/auth/code` which handles
156
+ * login and generates a one-time code for cross-domain auth.
157
+ *
158
+ * Mount in `routes/auth/start/+server.ts`:
159
+ * ```typescript
160
+ * export const GET = auth.startHandler
161
+ * ```
162
+ */
163
+ startHandler: SvelteKitRequestHandler;
164
+ /**
165
+ * SvelteKit request handler for `GET /auth/callback`.
166
+ *
167
+ * Receives a one-time code from auth.soulcraft.com, exchanges it
168
+ * server-to-server for user info, sets a local session cookie, and
169
+ * redirects to the final destination.
170
+ *
171
+ * Mount in `routes/auth/callback/+server.ts`:
172
+ * ```typescript
173
+ * export const GET = auth.callbackHandler
174
+ * ```
175
+ */
176
+ callbackHandler: SvelteKitRequestHandler;
177
+ /**
178
+ * SvelteKit request handler for `GET /auth/session`.
179
+ *
180
+ * Returns `{ authenticated: true, user: {...} }` or `{ authenticated: false }`.
181
+ *
182
+ * Mount in `routes/auth/session/+server.ts`:
183
+ * ```typescript
184
+ * export const GET = auth.sessionHandler
185
+ * ```
186
+ */
187
+ sessionHandler: SvelteKitRequestHandler;
179
188
  /**
180
189
  * SvelteKit request handler for `GET /api/dev/login`.
181
190
  *
182
191
  * Issues a signed dev session cookie and redirects. Accepts `?role=`,
183
- * `?email=`, `?name=`, `?redirect=` query params. Returns 404 in production
184
- * (safe to leave mounted always).
192
+ * `?email=`, `?name=`, `?redirect=` query params. Returns 404 in production.
185
193
  *
186
194
  * Mount in `routes/api/dev/login/+server.ts`:
187
195
  * ```typescript
@@ -198,18 +206,18 @@ export interface SoulcraftAuth {
198
206
  /**
199
207
  * @description Creates the complete SvelteKit auth integration for a Soulcraft product.
200
208
  *
201
- * Returns a `handle` hook, a `backchannelHandler`, and a `logoutHandler` — everything
202
- * needed for auth in a SvelteKit product. One function call replaces ~100 lines of
203
- * hand-rolled auth code in each product's hooks.server.ts.
209
+ * Returns a `handle` hook and a `logoutHandler` — everything needed for auth in a
210
+ * SvelteKit product. One function call replaces ~100 lines of hand-rolled auth code.
211
+ *
212
+ * Products authenticate via shared `.soulcraft.com` session cookies. No OIDC, no
213
+ * client secrets, no backchannel logout. Cookie deletion at sign-out logs out everywhere.
204
214
  *
205
215
  * **Environment variables read:**
206
- * - `SOULCRAFT_IDP_URL` — IdP base URL. Present → production mode. Absent → dev mode.
207
- * - `SOULCRAFT_OIDC_CLIENT_ID` OIDC client ID. Falls back to `options.product`.
208
- * - `SOULCRAFT_OIDC_CLIENT_SECRET` — OIDC client secret. Required for backchannel logout.
209
- * - `BETTER_AUTH_URL` — This product's base URL. Used for `post_logout_redirect_uri`.
216
+ * - `SOULCRAFT_AUTH_URL` — Auth server URL. Present → production mode. Absent → dev mode.
217
+ * Falls back to `SOULCRAFT_IDP_URL` for backward compatibility.
210
218
  *
211
219
  * @param options - Product name, optional verifier override, optional user enrichment.
212
- * @returns `{ handle, backchannelHandler, logoutHandler, verifySession }`.
220
+ * @returns `{ handle, logoutHandler, verifySession }`.
213
221
  *
214
222
  * @example Minimal setup (Workshop, Academy)
215
223
  * ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,YAAY,CAAA;AAOxE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KACrD,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,cAAc,CAAA;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtD,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAMlF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,KAAK,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,MAAM,EAAE,eAAe,CAAA;IAEvB;;;;;;;;;;;;OAYG;IACH,kBAAkB,EAAE,uBAAuB,CAAA;IAE3C;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,uBAAuB,CAAA;IAEtC;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAA;IAEpD;;;OAGG;IACH,aAAa,EAAE,eAAe,CAAA;CAC/B;AAuFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgVhF;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiBnE"}
1
+ {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,YAAY,CAAA;AAOxE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KACrD,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,cAAc,CAAA;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtD,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAMlF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,KAAK,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,MAAM,EAAE,eAAe,CAAA;IAEvB;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,uBAAuB,CAAA;IAEtC;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,uBAAuB,CAAA;IAErC;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,uBAAuB,CAAA;IAExC;;;;;;;;;OASG;IACH,cAAc,EAAE,uBAAuB,CAAA;IAEvC;;;;;;;;;;OAUG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAA;IAEpD;;;OAGG;IACH,aAAa,EAAE,eAAe,CAAA;CAC/B;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAsOhF;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiBnE"}
@@ -3,22 +3,18 @@
3
3
  * @description Opinionated SvelteKit auth integration for Soulcraft products.
4
4
  *
5
5
  * `createSoulcraftAuth()` returns everything a SvelteKit product needs for auth:
6
- * a `Handle` hook, a backchannel-logout request handler, and a logout request handler.
7
- * One function, zero choices.
6
+ * a `Handle` hook and a logout handler. One function, zero choices.
8
7
  *
9
8
  * ## What it does
10
9
  *
11
- * - **Session resolution** — reads the IdP cross-domain cookie, verifies via
12
- * `createRemoteSessionVerifier` (30s LRU cache) in production or
10
+ * - **Session resolution** — reads the `.soulcraft.com` session cookie, verifies
11
+ * via `createRemoteSessionVerifier` (30s LRU cache) in production or
13
12
  * `createDevCookieVerifier` in dev mode
14
13
  * - **Stale cookie recovery** — detects "cookie present but session null" and
15
14
  * clears the stale cookie via `Set-Cookie: Max-Age=0`, breaking redirect loops
16
- * - **CSRF bypass** — rewrites the `origin` header for `POST /api/auth/backchannel-logout`
17
- * so SvelteKit's built-in CSRF check doesn't block server-to-server IdP calls
18
15
  * - **User enrichment** — optional `enrichUser` callback for product-specific
19
16
  * role resolution (e.g. Venue staff lookup, Portal admin check)
20
- * - **Backchannel logout** — verifies the HS256 JWT logout token from the IdP
21
- * - **Logout** — clears local cookies and returns the IdP end-session URL
17
+ * - **Logout** — clears local cookies, calls auth.soulcraft.com/api/auth/sign-out
22
18
  *
23
19
  * ## Usage
24
20
  *
@@ -29,9 +25,6 @@
29
25
  * const auth = createSoulcraftAuth({ product: 'venue' })
30
26
  * export const handle = auth.handle
31
27
  *
32
- * // routes/api/auth/backchannel-logout/+server.ts
33
- * export const POST = auth.backchannelHandler
34
- *
35
28
  * // routes/api/auth/logout/+server.ts
36
29
  * export const POST = auth.logoutHandler
37
30
  * ```
@@ -62,68 +55,24 @@ const SESSION_COOKIE = '__Secure-better-auth.session_token';
62
55
  * Attributes mirror the IdP's original cookie so the browser accepts it.
63
56
  */
64
57
  const CLEAR_SESSION_COOKIE = `${SESSION_COOKIE}=; Domain=.soulcraft.com; Path=/; Max-Age=0; Secure; HttpOnly; SameSite=Lax`;
65
- /** OIDC Back-Channel Logout event URI (per spec). */
66
- const BACKCHANNEL_LOGOUT_EVENT = 'http://schemas.openid.net/event/backchannel-logout';
67
- // ─────────────────────────────────────────────────────────────────────────────
68
- // JWT verification (Web Crypto API — no external deps)
69
- // ─────────────────────────────────────────────────────────────────────────────
70
- /**
71
- * Verify an HS256 JWT using the Web Crypto API.
72
- *
73
- * @param token - Raw JWT string (`header.payload.signature`).
74
- * @param secret - HMAC secret for signature verification.
75
- * @returns The decoded payload if the signature is valid, or null.
76
- */
77
- async function verifyHS256JWT(token, secret) {
78
- const parts = token.split('.');
79
- if (parts.length !== 3)
80
- return null;
81
- const [headerB64, payloadB64, sigB64] = parts;
82
- let key;
83
- try {
84
- key = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['verify']);
85
- }
86
- catch {
87
- return null;
88
- }
89
- const signingInput = `${headerB64}.${payloadB64}`;
90
- let sigBytes;
91
- try {
92
- sigBytes = Uint8Array.from(atob(sigB64.replace(/-/g, '+').replace(/_/g, '/')), (c) => c.charCodeAt(0));
93
- }
94
- catch {
95
- return null;
96
- }
97
- const valid = await crypto.subtle.verify('HMAC', key, sigBytes.buffer, new TextEncoder().encode(signingInput));
98
- if (!valid)
99
- return null;
100
- try {
101
- const padded = payloadB64.replace(/-/g, '+').replace(/_/g, '/') +
102
- '=='.slice(0, (4 - (payloadB64.length % 4)) % 4);
103
- return JSON.parse(atob(padded));
104
- }
105
- catch {
106
- return null;
107
- }
108
- }
109
58
  // ─────────────────────────────────────────────────────────────────────────────
110
59
  // createSoulcraftAuth
111
60
  // ─────────────────────────────────────────────────────────────────────────────
112
61
  /**
113
62
  * @description Creates the complete SvelteKit auth integration for a Soulcraft product.
114
63
  *
115
- * Returns a `handle` hook, a `backchannelHandler`, and a `logoutHandler` — everything
116
- * needed for auth in a SvelteKit product. One function call replaces ~100 lines of
117
- * hand-rolled auth code in each product's hooks.server.ts.
64
+ * Returns a `handle` hook and a `logoutHandler` — everything needed for auth in a
65
+ * SvelteKit product. One function call replaces ~100 lines of hand-rolled auth code.
66
+ *
67
+ * Products authenticate via shared `.soulcraft.com` session cookies. No OIDC, no
68
+ * client secrets, no backchannel logout. Cookie deletion at sign-out logs out everywhere.
118
69
  *
119
70
  * **Environment variables read:**
120
- * - `SOULCRAFT_IDP_URL` — IdP base URL. Present → production mode. Absent → dev mode.
121
- * - `SOULCRAFT_OIDC_CLIENT_ID` OIDC client ID. Falls back to `options.product`.
122
- * - `SOULCRAFT_OIDC_CLIENT_SECRET` — OIDC client secret. Required for backchannel logout.
123
- * - `BETTER_AUTH_URL` — This product's base URL. Used for `post_logout_redirect_uri`.
71
+ * - `SOULCRAFT_AUTH_URL` — Auth server URL. Present → production mode. Absent → dev mode.
72
+ * Falls back to `SOULCRAFT_IDP_URL` for backward compatibility.
124
73
  *
125
74
  * @param options - Product name, optional verifier override, optional user enrichment.
126
- * @returns `{ handle, backchannelHandler, logoutHandler, verifySession }`.
75
+ * @returns `{ handle, logoutHandler, verifySession }`.
127
76
  *
128
77
  * @example Minimal setup (Workshop, Academy)
129
78
  * ```typescript
@@ -143,9 +92,9 @@ async function verifyHS256JWT(token, secret) {
143
92
  * ```
144
93
  */
145
94
  export function createSoulcraftAuth(options) {
146
- const { product, enrichUser, devCookieName = 'soulcraft_dev_session', backchannelPath = '/api/auth/backchannel-logout', defaultDevRole = 'owner', } = options;
95
+ const { product, enrichUser, devCookieName = 'soulcraft_dev_session', defaultDevRole = 'owner', } = options;
147
96
  // ── Session verifier selection ──────────────────────────────────────────
148
- const idpUrl = process.env['SOULCRAFT_IDP_URL'];
97
+ const idpUrl = process.env['SOULCRAFT_AUTH_URL'] ?? process.env['SOULCRAFT_IDP_URL'];
149
98
  const isDevMode = !idpUrl;
150
99
  const verifySession = options.verifier
151
100
  ?? (idpUrl
@@ -161,80 +110,43 @@ export function createSoulcraftAuth(options) {
161
110
  }
162
111
  console.log();
163
112
  }
164
- // ── Built-in route handler auth routes served from the SDK ─────────
165
- // Products don't need route files for auth. The handle hook intercepts
166
- // /auth/* and /api/auth/* paths and responds directly.
167
- function handleBuiltinRoute(event) {
168
- const path = event.url.pathname;
169
- const method = event.request.method;
170
- // GET /auth/session — return authenticated user
171
- if (path === '/auth/session' && method === 'GET') {
172
- const user = event.locals['user'];
173
- if (!user) {
174
- return Response.json({ authenticated: false });
175
- }
176
- return Response.json({
177
- authenticated: true,
178
- user: {
179
- id: user.id,
180
- email: user.email,
181
- name: user.name,
182
- image: user.image ?? null,
183
- },
184
- });
113
+ // ── Route handlersmount as SvelteKit route files ─────────────────
114
+ // Products create thin +server.ts files that import these handlers.
115
+ // This is the correct SvelteKit pattern — route files for routes.
116
+ /** GET /auth/start — initiate login */
117
+ const startHandler = async (event) => {
118
+ const callbackPath = event.url.searchParams.get('callbackURL') ?? '/';
119
+ if (isDevMode) {
120
+ const devRole = defaultDevRole || 'owner';
121
+ return new Response(null, { status: 302, headers: { Location: `/api/dev/login?role=${devRole}&redirect=${encodeURIComponent(callbackPath)}` } });
185
122
  }
186
- // GET /auth/start — initiate login
187
- if (path === '/auth/start' && method === 'GET') {
188
- const callbackPath = event.url.searchParams.get('callbackURL') ?? '/';
189
- if (isDevMode) {
190
- const devRole = defaultDevRole || 'owner';
191
- return new Response(null, { status: 302, headers: { Location: `/api/dev/login?role=${devRole}&redirect=${encodeURIComponent(callbackPath)}` } });
192
- }
193
- // Determine the public origin — respect ORIGIN env var and X-Forwarded-Proto
194
- // for apps behind reverse proxies (Cloudflare, Caddy, nginx).
195
- const publicOrigin = process.env['ORIGIN']
196
- || (event.request.headers.get('x-forwarded-proto') === 'https'
197
- ? `https://${event.url.host}`
198
- : event.url.origin);
199
- // Redirect to auth.soulcraft.com/auth/code which handles login + code generation.
200
- // After login, auth redirects to our /auth/callback with a one-time code.
201
- const callbackUrl = `${publicOrigin}/auth/callback?finalPath=${encodeURIComponent(callbackPath)}`;
202
- const authUrl = `${idpUrl}/auth/code?redirect=${encodeURIComponent(callbackUrl)}`;
203
- return new Response(null, { status: 302, headers: { Location: authUrl } });
204
- }
205
- // GET /api/dev/login — dev mode login
206
- if (path === '/api/dev/login' && method === 'GET') {
207
- return devLoginHandler(event);
208
- }
209
- return null;
210
- }
211
- // ── Auth callback — exchange one-time code for session ────────────────
212
- /**
213
- * Handles GET /auth/callback?code=XXX&finalPath=/app
214
- * Exchanges the one-time code with auth.soulcraft.com for user info,
215
- * then sets a local session cookie.
216
- */
217
- async function handleAuthCallback(event) {
123
+ const publicOrigin = process.env['ORIGIN']
124
+ || (event.request.headers.get('x-forwarded-proto') === 'https'
125
+ ? `https://${event.url.host}`
126
+ : event.url.origin);
127
+ const callbackUrl = `${publicOrigin}/auth/callback?finalPath=${encodeURIComponent(callbackPath)}`;
128
+ const authUrl = `${idpUrl}/auth/code?redirect=${encodeURIComponent(callbackUrl)}`;
129
+ return new Response(null, { status: 302, headers: { Location: authUrl } });
130
+ };
131
+ /** GET /auth/callback exchange one-time code for session */
132
+ const callbackHandler = async (event) => {
218
133
  const code = event.url.searchParams.get('code');
219
134
  if (!code) {
220
135
  return new Response(null, { status: 302, headers: { Location: '/auth/start' } });
221
136
  }
222
- // Exchange code for user info (server-to-server)
223
137
  let user = null;
224
138
  try {
225
- const res = await fetch(`${idpUrl}/api/auth/exchange-code?code=${encodeURIComponent(code)}`);
139
+ const exchangeUrl = `${idpUrl}/api/auth/exchange-code?code=${encodeURIComponent(code)}`;
140
+ const res = await fetch(exchangeUrl);
226
141
  if (res.ok) {
227
142
  const data = await res.json();
228
143
  user = data.user ?? null;
229
144
  }
230
145
  }
231
- catch {
232
- // Exchange failed
233
- }
146
+ catch { /* exchange failed */ }
234
147
  if (!user) {
235
148
  return new Response(null, { status: 302, headers: { Location: '/auth/start?error=code_exchange_failed' } });
236
149
  }
237
- // Create local session cookie
238
150
  const email = String(user['email'] ?? '');
239
151
  const sessionData = {
240
152
  user: {
@@ -261,18 +173,24 @@ export function createSoulcraftAuth(options) {
261
173
  'Max-Age=604800',
262
174
  ].filter(Boolean).join('; '));
263
175
  return response;
264
- }
176
+ };
177
+ /** GET /auth/session — return authenticated user */
178
+ const sessionHandler = async (event) => {
179
+ const user = event.locals['user'];
180
+ if (!user)
181
+ return Response.json({ authenticated: false });
182
+ return Response.json({
183
+ authenticated: true,
184
+ user: {
185
+ id: user.id,
186
+ email: user.email,
187
+ name: user.name,
188
+ image: user.image ?? null,
189
+ },
190
+ });
191
+ };
265
192
  // ── Handle hook ─────────────────────────────────────────────────────────
266
193
  const handle = async ({ event, resolve }) => {
267
- // CSRF bypass for backchannel-logout — the IdP sends server-to-server
268
- // POST requests without a browser origin header. Rewrite it so
269
- // SvelteKit's CSRF check passes. The endpoint itself verifies the JWT.
270
- if (event.url.pathname === backchannelPath &&
271
- event.request.method === 'POST') {
272
- const headers = new Headers(event.request.headers);
273
- headers.set('origin', event.url.origin);
274
- event.request = new Request(event.request, { headers });
275
- }
276
194
  // Resolve session
277
195
  const cookieHeader = event.request.headers.get('cookie') ?? '';
278
196
  let session = await verifySession(cookieHeader);
@@ -335,92 +253,27 @@ export function createSoulcraftAuth(options) {
335
253
  else {
336
254
  event.locals['user'] = null;
337
255
  }
338
- // ── Built-in auth routes ───────────────────────────────────────────
339
- const path = event.url.pathname;
340
- const method = event.request.method;
341
- // Async routes
342
- if (path === '/auth/callback' && method === 'GET')
343
- return handleAuthCallback(event);
344
- if (path === '/auth/logout' && method === 'POST')
345
- return logoutHandler(event);
346
- if (path === backchannelPath && method === 'POST')
347
- return backchannelHandler(event);
348
- // Sync routes
349
- const builtinResponse = handleBuiltinRoute(event);
350
- if (builtinResponse)
351
- return builtinResponse;
352
256
  return resolve(event);
353
257
  };
354
- // ── Backchannel logout handler ──────────────────────────────────────────
355
- const backchannelHandler = async ({ request }) => {
356
- const clientSecret = process.env['SOULCRAFT_OIDC_CLIENT_SECRET'];
357
- const idpUrlEnv = process.env['SOULCRAFT_IDP_URL'];
358
- const clientId = process.env['SOULCRAFT_OIDC_CLIENT_ID'] ?? product;
359
- // Only operates in OIDC client mode
360
- if (!clientSecret || !idpUrlEnv) {
361
- return new Response(null, { status: 200 });
362
- }
363
- // Parse logout_token from form body
364
- let logoutToken = null;
365
- try {
366
- const body = await request.text();
367
- const params = new URLSearchParams(body);
368
- logoutToken = params.get('logout_token');
369
- }
370
- catch {
371
- return new Response('malformed request body', { status: 400 });
372
- }
373
- if (!logoutToken) {
374
- return new Response('missing logout_token', { status: 400 });
375
- }
376
- // Verify JWT signature and claims
377
- const payload = await verifyHS256JWT(logoutToken, clientSecret);
378
- if (!payload) {
379
- return new Response('invalid logout_token', { status: 400 });
380
- }
381
- // Validate issuer
382
- const expectedIss = idpUrlEnv.replace(/\/$/, '');
383
- if (payload['iss'] !== expectedIss) {
384
- return new Response('invalid issuer', { status: 400 });
385
- }
386
- // Validate audience
387
- const aud = payload['aud'];
388
- const audList = Array.isArray(aud) ? aud : [String(aud ?? '')];
389
- if (!audList.includes(clientId)) {
390
- return new Response('invalid audience', { status: 400 });
391
- }
392
- // Validate events claim
393
- const events = payload['events'];
394
- if (!events || !(BACKCHANNEL_LOGOUT_EVENT in events)) {
395
- return new Response('missing backchannel-logout event claim', { status: 400 });
396
- }
397
- // Validate sub claim
398
- if (!payload['sub'] || typeof payload['sub'] !== 'string') {
399
- return new Response('missing sub claim', { status: 400 });
400
- }
401
- // SvelteKit products hold no local sessions — auth state lives at the IdP.
402
- // The SDK verifier's 30s LRU cache will expire naturally.
403
- return new Response(null, { status: 200 });
404
- };
405
258
  // ── Logout handler ──────────────────────────────────────────────────────
406
- const logoutHandler = async ({ cookies, url }) => {
407
- const idpUrlEnv = process.env['SOULCRAFT_IDP_URL'];
408
- if (!idpUrlEnv) {
409
- // Dev mode — clear the dev session cookie and redirect home
259
+ // Clears the local dev cookie (if dev mode) and calls the auth server's
260
+ // sign-out endpoint to clear the .soulcraft.com session cookie.
261
+ const logoutHandler = async ({ request, cookies, url }) => {
262
+ if (isDevMode) {
410
263
  cookies.delete(devCookieName, { path: '/' });
411
264
  return new Response(JSON.stringify({ redirect: '/' }), {
412
265
  headers: { 'Content-Type': 'application/json' },
413
266
  });
414
267
  }
415
- // OIDC mode build the IdP end-session URL
416
- const clientId = process.env['SOULCRAFT_OIDC_CLIENT_ID'] ?? product;
417
- const baseUrl = process.env['BETTER_AUTH_URL'] ?? `${url.protocol}//${url.host}`;
418
- const params = new URLSearchParams({
419
- client_id: clientId,
420
- post_logout_redirect_uri: `${baseUrl}/`,
421
- });
422
- const endSessionUrl = `${idpUrlEnv}/api/auth/oauth2/endsession?${params}`;
423
- return new Response(JSON.stringify({ redirect: endSessionUrl }), {
268
+ // Call auth server sign-out (clears the .soulcraft.com cookie)
269
+ try {
270
+ await fetch(`${idpUrl}/api/auth/sign-out`, {
271
+ method: 'POST',
272
+ headers: { cookie: request.headers.get('cookie') ?? '' },
273
+ });
274
+ }
275
+ catch { /* sign-out is best-effort */ }
276
+ return new Response(JSON.stringify({ redirect: '/' }), {
424
277
  headers: { 'Content-Type': 'application/json' },
425
278
  });
426
279
  };
@@ -429,7 +282,15 @@ export function createSoulcraftAuth(options) {
429
282
  cookieName: devCookieName,
430
283
  });
431
284
  const devLoginHandler = (event) => rawDevLogin(event.request);
432
- return { handle, backchannelHandler, logoutHandler, devLoginHandler, verifySession };
285
+ return {
286
+ handle,
287
+ startHandler,
288
+ callbackHandler,
289
+ sessionHandler,
290
+ logoutHandler,
291
+ devLoginHandler,
292
+ verifySession,
293
+ };
433
294
  }
434
295
  /**
435
296
  * @description Build the auth.soulcraft.com login URL for redirecting unauthenticated users.
@@ -456,13 +317,13 @@ export function createSoulcraftAuth(options) {
456
317
  * ```
457
318
  */
458
319
  export function buildLoginUrl(options) {
459
- const idpUrl = process.env['SOULCRAFT_IDP_URL'];
460
- if (!idpUrl) {
320
+ const authUrl = process.env['SOULCRAFT_AUTH_URL'] ?? process.env['SOULCRAFT_IDP_URL'];
321
+ if (!authUrl) {
461
322
  // Dev mode — use the local dev login endpoint
462
323
  const params = new URLSearchParams({ redirect: options.redirectUrl });
463
324
  return `/api/dev/login?${params}`;
464
325
  }
465
- // Production — redirect to the central IdP login page
326
+ // Production — redirect to the auth server login page
466
327
  const params = new URLSearchParams({
467
328
  redirect: options.redirectUrl,
468
329
  });
@@ -470,6 +331,6 @@ export function buildLoginUrl(options) {
470
331
  params.set('product', options.product);
471
332
  if (options.tenant)
472
333
  params.set('tenant', options.tenant);
473
- return `${idpUrl.replace(/\/$/, '')}/login?${params}`;
334
+ return `${authUrl.replace(/\/$/, '')}/login?${params}`;
474
335
  }
475
336
  //# sourceMappingURL=sveltekit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"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"}