@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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/auth/config.d.ts +0 -30
- package/dist/modules/auth/config.d.ts.map +1 -1
- package/dist/modules/auth/config.js +0 -52
- package/dist/modules/auth/config.js.map +1 -1
- package/dist/modules/auth/products.d.ts +36 -99
- package/dist/modules/auth/products.d.ts.map +1 -1
- package/dist/modules/auth/products.js +32 -78
- package/dist/modules/auth/products.js.map +1 -1
- package/dist/modules/auth/sveltekit.d.ts +53 -45
- package/dist/modules/auth/sveltekit.d.ts.map +1 -1
- package/dist/modules/auth/sveltekit.js +78 -217
- package/dist/modules/auth/sveltekit.js.map +1 -1
- package/dist/modules/auth/types.d.ts +0 -28
- package/dist/modules/auth/types.d.ts.map +1 -1
- package/dist/server/index.d.ts +2 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -4
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
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
|
-
* - **
|
|
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
|
-
* - `
|
|
92
|
-
* - `
|
|
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
|
|
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
|
|
202
|
-
*
|
|
203
|
-
*
|
|
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
|
-
* - `
|
|
207
|
-
*
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
* - **
|
|
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
|
|
116
|
-
*
|
|
117
|
-
*
|
|
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
|
-
* - `
|
|
121
|
-
*
|
|
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,
|
|
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',
|
|
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
|
-
// ──
|
|
165
|
-
// Products
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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 handlers — mount 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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
|
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
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
-
//
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
return new Response(JSON.stringify({ redirect:
|
|
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 {
|
|
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
|
|
460
|
-
if (!
|
|
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
|
|
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 `${
|
|
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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"}
|