clearauth 0.6.2 → 0.7.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/CHANGELOG.md +25 -0
- package/README.md +182 -61
- package/dist/auth/handler.js +29 -16
- package/dist/auth/handler.js.map +1 -1
- package/dist/createMechAuth.d.ts +2 -0
- package/dist/createMechAuth.js +1 -0
- package/dist/createMechAuth.js.map +1 -1
- package/dist/handler.d.ts +5 -0
- package/dist/handler.js +76 -10
- package/dist/handler.js.map +1 -1
- package/dist/jwt/handlers.d.ts +7 -0
- package/dist/jwt/handlers.js +9 -2
- package/dist/jwt/handlers.js.map +1 -1
- package/dist/jwt/issue-token-pair.d.ts +30 -0
- package/dist/jwt/issue-token-pair.js +32 -0
- package/dist/jwt/issue-token-pair.js.map +1 -0
- package/dist/jwt/refresh-tokens.d.ts +11 -0
- package/dist/jwt/refresh-tokens.js +19 -0
- package/dist/jwt/refresh-tokens.js.map +1 -1
- package/dist/jwt/signer.d.ts +1 -1
- package/dist/jwt/signer.js +10 -3
- package/dist/jwt/signer.js.map +1 -1
- package/dist/jwt/types.d.ts +7 -0
- package/dist/jwt/types.js.map +1 -1
- package/dist/mech-sql-client.js +4 -3
- package/dist/mech-sql-client.js.map +1 -1
- package/dist/oauth/callbacks.d.ts +1 -31
- package/dist/oauth/callbacks.js +2 -63
- package/dist/oauth/callbacks.js.map +1 -1
- package/dist/oauth/handler.js +23 -3
- package/dist/oauth/handler.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/utils/session.d.ts +30 -0
- package/dist/utils/session.js +69 -0
- package/dist/utils/session.js.map +1 -0
- package/package.json +1 -1
package/dist/oauth/callbacks.js
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* - Error handling
|
|
9
9
|
*/
|
|
10
10
|
import { base64url } from 'oslo/encoding';
|
|
11
|
-
|
|
11
|
+
// Re-export from canonical location so existing callers continue to work
|
|
12
|
+
export { validateSession, parseCookies } from '../utils/session.js';
|
|
12
13
|
/**
|
|
13
14
|
* Generate a secure random session ID
|
|
14
15
|
* @param entropySize Number of bytes of entropy (default: 25 = 200 bits)
|
|
@@ -127,44 +128,6 @@ context) {
|
|
|
127
128
|
await db.insertInto('sessions').values(newSession).execute();
|
|
128
129
|
return sessionId;
|
|
129
130
|
}
|
|
130
|
-
/**
|
|
131
|
-
* Validate session
|
|
132
|
-
*
|
|
133
|
-
* Checks if a session exists and is not expired.
|
|
134
|
-
*
|
|
135
|
-
* @param db - Kysely database instance
|
|
136
|
-
* @param sessionId - Session ID to validate
|
|
137
|
-
* @param logger - Optional logger for error reporting
|
|
138
|
-
* @returns User if session is valid, null otherwise
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* ```ts
|
|
142
|
-
* const user = await validateSession(db, sessionId)
|
|
143
|
-
* if (!user) {
|
|
144
|
-
* return new Response('Unauthorized', { status: 401 })
|
|
145
|
-
* }
|
|
146
|
-
* ```
|
|
147
|
-
*/
|
|
148
|
-
export async function validateSession(db, sessionId, logger = getDefaultLogger()) {
|
|
149
|
-
try {
|
|
150
|
-
const result = await db
|
|
151
|
-
.selectFrom('sessions')
|
|
152
|
-
.innerJoin('users', 'users.id', 'sessions.user_id')
|
|
153
|
-
.selectAll('users')
|
|
154
|
-
.where('sessions.id', '=', sessionId)
|
|
155
|
-
.where('sessions.expires_at', '>', new Date())
|
|
156
|
-
.executeTakeFirst();
|
|
157
|
-
return result || null;
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
// Log the error using the provided logger to prevent 500 errors for the client
|
|
161
|
-
// during background session checks. This aids debugging while maintaining resilience.
|
|
162
|
-
// Redact sessionId to avoid exposing sensitive tokens in logs
|
|
163
|
-
const redactedSessionId = sessionId ? `${sessionId.slice(0, 8)}...` : 'unknown';
|
|
164
|
-
logger.error('Session validation error', { error, sessionId: redactedSessionId });
|
|
165
|
-
return null;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
131
|
/**
|
|
169
132
|
* Delete session (logout)
|
|
170
133
|
*
|
|
@@ -219,30 +182,6 @@ export async function cleanupExpiredSessions(db) {
|
|
|
219
182
|
.executeTakeFirst();
|
|
220
183
|
return Number(result.numDeletedRows ?? 0);
|
|
221
184
|
}
|
|
222
|
-
/**
|
|
223
|
-
* Parse cookie header
|
|
224
|
-
*
|
|
225
|
-
* Parses the Cookie header and returns a map of cookie names to values.
|
|
226
|
-
*
|
|
227
|
-
* @param cookieHeader - Cookie header string
|
|
228
|
-
* @returns Map of cookie names to values
|
|
229
|
-
*
|
|
230
|
-
* @internal
|
|
231
|
-
*/
|
|
232
|
-
export function parseCookies(cookieHeader) {
|
|
233
|
-
const cookies = {};
|
|
234
|
-
if (!cookieHeader) {
|
|
235
|
-
return cookies;
|
|
236
|
-
}
|
|
237
|
-
const pairs = cookieHeader.split(';');
|
|
238
|
-
for (const pair of pairs) {
|
|
239
|
-
const [name, value] = pair.trim().split('=');
|
|
240
|
-
if (name && value) {
|
|
241
|
-
cookies[name] = decodeURIComponent(value);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return cookies;
|
|
245
|
-
}
|
|
246
185
|
/**
|
|
247
186
|
* Create cookie header
|
|
248
187
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/oauth/callbacks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/oauth/callbacks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAMzC,yEAAyE;AACzE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEnE;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,cAAsB,EAAE;IACjD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAoB,EACpB,QAAuB,EACvB,OAAyB;IAEzB,MAAM,gBAAgB,GAAG,GAAG,QAAQ,KAA4B,CAAA;IAEhE,sCAAsC;IACtC,MAAM,YAAY,GAAG,MAAM,EAAE;SAC1B,UAAU,CAAC,OAAO,CAAC;SACnB,SAAS,EAAE;SACX,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;SACxC,gBAAgB,EAAE,CAAA;IAErB,IAAI,YAAY,EAAE,CAAC;QACjB,gDAAgD;QAChD,MAAM,WAAW,GAAG,MAAM,EAAE;aACzB,WAAW,CAAC,OAAO,CAAC;aACpB,GAAG,CAAC;YACH,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,cAAc;SACtE,CAAC;aACD,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;aACjC,YAAY,EAAE;aACd,uBAAuB,EAAE,CAAA;QAE5B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,mDAAmD;IACnD,MAAM,WAAW,GAAG,MAAM,EAAE;SACzB,UAAU,CAAC,OAAO,CAAC;SACnB,SAAS,EAAE;SACX,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;SAClC,gBAAgB,EAAE,CAAA;IAErB,IAAI,WAAW,EAAE,CAAC;QAChB,gDAAgD;QAChD,MAAM,WAAW,GAAG,MAAM,EAAE;aACzB,WAAW,CAAC,OAAO,CAAC;aACpB,GAAG,CAAC;YACH,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,EAAE;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;YACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU;YACxD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc;SACrE,CAAC;aACD,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;aAChC,YAAY,EAAE;aACd,uBAAuB,EAAE,CAAA;QAE5B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAY;QACvB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;QAC/C,aAAa,EAAE,IAAI,EAAE,kBAAkB;QACvC,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,EAAE;SACzB,UAAU,CAAC,OAAO,CAAC;SACnB,MAAM,CAAC,OAAO,CAAC;SACf,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAA;IAE5B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAoB,EACpB,MAAc,EACd,mBAA2B,OAAO,EAAE,UAAU;AAC9C,OAAwB;IAExB,oCAAoC;IACpC,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAA,CAAC,sBAAsB;IAE9D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAEhE,MAAM,UAAU,GAAe;QAC7B,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;QACtC,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;KACvC,CAAA;IAED,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAA;IAE5D,OAAO,SAAS,CAAA;AAClB,CAAC;AAGD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAoB,EAAE,SAAiB;IACzE,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AACvE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAoB,EACpB,MAAc;IAEd,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAoB;IAC/D,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,UAAU,CAAC,UAAU,CAAC;SACtB,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;SACrC,gBAAgB,EAAE,CAAA;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;AAC3C,CAAC;AAGD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,KAAa,EACb,UAQI,EAAE;IAEN,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAEtD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChG,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,UAGI,EAAE;IAEN,OAAO,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE;QAClC,GAAG,OAAO;QACV,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;KACrB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/oauth/handler.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Handles OAuth-related HTTP requests for various providers.
|
|
5
5
|
* Provides login initiation and callback handling endpoints.
|
|
6
6
|
*/
|
|
7
|
+
import { issueTokenPair } from '../jwt/issue-token-pair.js';
|
|
7
8
|
import { generateGitHubAuthUrl, handleGitHubCallback } from './github.js';
|
|
8
9
|
import { generateGoogleAuthUrl, handleGoogleCallback } from './google.js';
|
|
9
10
|
import { generateDiscordAuthUrl, handleDiscordCallback } from './discord.js';
|
|
@@ -64,7 +65,7 @@ async function handleOAuthLogin(config, providerName, authUrlGenerator) {
|
|
|
64
65
|
return new Response(null, { status: 302, headers });
|
|
65
66
|
}
|
|
66
67
|
catch (error) {
|
|
67
|
-
console.error(
|
|
68
|
+
console.error(providerName + ' login error:', error); // nosemgrep
|
|
68
69
|
return new Response('OAuth configuration error', { status: 500 });
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -112,11 +113,30 @@ async function handleOAuthCallbackRequest(request, config, providerName, callbac
|
|
|
112
113
|
if (codeVerifier) {
|
|
113
114
|
deleteCookies.push(createDeleteCookieHeader('oauth_code_verifier', { path: '/' }));
|
|
114
115
|
}
|
|
115
|
-
const
|
|
116
|
+
const additionalCookies = [];
|
|
117
|
+
if (config.jwt) {
|
|
118
|
+
const tokens = await issueTokenPair(config.database, user, config.jwt);
|
|
119
|
+
const jwtCookieBase = {
|
|
120
|
+
httpOnly: true,
|
|
121
|
+
secure: config.session?.cookie?.secure ?? config.isProduction ?? true,
|
|
122
|
+
sameSite: config.session?.cookie?.sameSite ?? 'lax',
|
|
123
|
+
path: config.session?.cookie?.path ?? '/',
|
|
124
|
+
domain: config.session?.cookie?.domain,
|
|
125
|
+
};
|
|
126
|
+
additionalCookies.push(createCookieHeader('jwt_access_token', tokens.accessToken, {
|
|
127
|
+
...jwtCookieBase,
|
|
128
|
+
maxAge: tokens.expiresIn,
|
|
129
|
+
}));
|
|
130
|
+
additionalCookies.push(createCookieHeader('jwt_refresh_token', tokens.refreshToken, {
|
|
131
|
+
...jwtCookieBase,
|
|
132
|
+
maxAge: tokens.refreshTokenExpiresIn,
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
const headers = createHeadersWithCookies([sessionCookie, ...additionalCookies, ...deleteCookies], '/');
|
|
116
136
|
return new Response(null, { status: 302, headers });
|
|
117
137
|
}
|
|
118
138
|
catch (error) {
|
|
119
|
-
console.error(
|
|
139
|
+
console.error(providerName + ' callback error:', error); // nosemgrep
|
|
120
140
|
const message = error instanceof Error ? error.message : 'OAuth callback failed';
|
|
121
141
|
return new Response(message, { status: 400 });
|
|
122
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/oauth/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAA;AAEvB;;;;;;;;;GASG;AACH,SAAS,wBAAwB,CAAC,OAAiB,EAAE,QAAiB;IACpE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAC7B,MAAuB,EACvB,YAAoB,EACpB,gBAA0G;IAE1G,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAEnE,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,KAAK,EAAE;YACpD,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;YACnC,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,GAAG,EAAE,aAAa;SAC3B,CAAC,CAAC,CAAA;QAEH,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,YAAY,EAAE;gBACnE,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;gBACnC,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,GAAG,EAAE,aAAa;aAC3B,CAAC,CAAC,CAAA;QACL,CAAC;QAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACjE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/oauth/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { Kysely } from 'kysely';
|
|
|
7
7
|
import type { Database } from './database/schema.js';
|
|
8
8
|
import type { PasswordHasher } from './password-hasher.js';
|
|
9
9
|
import type { Logger } from './logger.js';
|
|
10
|
+
import type { JwtConfig } from './jwt/types.js';
|
|
10
11
|
/**
|
|
11
12
|
* OAuth Provider Configuration
|
|
12
13
|
*/
|
|
@@ -224,6 +225,13 @@ export interface ClearAuthConfig {
|
|
|
224
225
|
* Production mode flag
|
|
225
226
|
*/
|
|
226
227
|
isProduction?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* JWT configuration for stateless token issuance
|
|
230
|
+
*
|
|
231
|
+
* When provided, login/register responses will include JWT token pairs.
|
|
232
|
+
* Also enables /auth/token, /auth/refresh, and /auth/revoke routes.
|
|
233
|
+
*/
|
|
234
|
+
jwt?: JwtConfig;
|
|
227
235
|
/**
|
|
228
236
|
* Android device authentication configuration
|
|
229
237
|
*
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session utilities
|
|
3
|
+
*
|
|
4
|
+
* Session validation and cookie parsing helpers. Kept in a shared utils module
|
|
5
|
+
* so the main request handler (and other non-OAuth code) can import them without
|
|
6
|
+
* creating a direct dependency on the OAuth callbacks module.
|
|
7
|
+
*/
|
|
8
|
+
import type { Kysely } from 'kysely';
|
|
9
|
+
import type { Database, User } from '../database/schema.js';
|
|
10
|
+
import type { Logger } from '../logger.js';
|
|
11
|
+
/**
|
|
12
|
+
* Validate session
|
|
13
|
+
*
|
|
14
|
+
* Checks if a session exists and is not expired.
|
|
15
|
+
*
|
|
16
|
+
* @param db - Kysely database instance
|
|
17
|
+
* @param sessionId - Session ID to validate
|
|
18
|
+
* @param logger - Optional logger for error reporting
|
|
19
|
+
* @returns User if session is valid, null otherwise
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateSession(db: Kysely<Database>, sessionId: string, logger?: Logger): Promise<User | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Parse cookie header
|
|
24
|
+
*
|
|
25
|
+
* Parses the Cookie header and returns a map of cookie names to values.
|
|
26
|
+
*
|
|
27
|
+
* @param cookieHeader - Cookie header string
|
|
28
|
+
* @returns Map of cookie names to values
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseCookies(cookieHeader: string): Record<string, string>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session utilities
|
|
3
|
+
*
|
|
4
|
+
* Session validation and cookie parsing helpers. Kept in a shared utils module
|
|
5
|
+
* so the main request handler (and other non-OAuth code) can import them without
|
|
6
|
+
* creating a direct dependency on the OAuth callbacks module.
|
|
7
|
+
*/
|
|
8
|
+
import { getDefaultLogger } from '../logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Validate session
|
|
11
|
+
*
|
|
12
|
+
* Checks if a session exists and is not expired.
|
|
13
|
+
*
|
|
14
|
+
* @param db - Kysely database instance
|
|
15
|
+
* @param sessionId - Session ID to validate
|
|
16
|
+
* @param logger - Optional logger for error reporting
|
|
17
|
+
* @returns User if session is valid, null otherwise
|
|
18
|
+
*/
|
|
19
|
+
export async function validateSession(db, sessionId, logger = getDefaultLogger()) {
|
|
20
|
+
try {
|
|
21
|
+
const result = await db
|
|
22
|
+
.selectFrom('sessions')
|
|
23
|
+
.innerJoin('users', 'users.id', 'sessions.user_id')
|
|
24
|
+
.selectAll('users')
|
|
25
|
+
.where('sessions.id', '=', sessionId)
|
|
26
|
+
.where('sessions.expires_at', '>', new Date())
|
|
27
|
+
.executeTakeFirst();
|
|
28
|
+
return result || null;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// Redact sessionId to avoid exposing sensitive tokens in logs
|
|
32
|
+
const redactedSessionId = sessionId ? `${sessionId.slice(0, 8)}...` : 'unknown';
|
|
33
|
+
logger.error('Session validation error', { error, sessionId: redactedSessionId });
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parse cookie header
|
|
39
|
+
*
|
|
40
|
+
* Parses the Cookie header and returns a map of cookie names to values.
|
|
41
|
+
*
|
|
42
|
+
* @param cookieHeader - Cookie header string
|
|
43
|
+
* @returns Map of cookie names to values
|
|
44
|
+
*/
|
|
45
|
+
export function parseCookies(cookieHeader) {
|
|
46
|
+
const cookies = {};
|
|
47
|
+
if (!cookieHeader) {
|
|
48
|
+
return cookies;
|
|
49
|
+
}
|
|
50
|
+
const pairs = cookieHeader.split(';');
|
|
51
|
+
for (const pair of pairs) {
|
|
52
|
+
const trimmed = pair.trim();
|
|
53
|
+
const eqIdx = trimmed.indexOf('=');
|
|
54
|
+
if (eqIdx === -1)
|
|
55
|
+
continue;
|
|
56
|
+
const name = trimmed.slice(0, eqIdx).trim();
|
|
57
|
+
const value = trimmed.slice(eqIdx + 1);
|
|
58
|
+
if (name) {
|
|
59
|
+
try {
|
|
60
|
+
cookies[name] = decodeURIComponent(value);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
cookies[name] = value;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return cookies;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAoB,EACpB,SAAiB,EACjB,SAAiB,gBAAgB,EAAE;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE;aACpB,UAAU,CAAC,UAAU,CAAC;aACtB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC;aAClD,SAAS,CAAC,OAAO,CAAC;aAClB,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC;aACpC,KAAK,CAAC,qBAAqB,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;aAC7C,gBAAgB,EAAE,CAAA;QAErB,OAAO,MAAM,IAAI,IAAI,CAAA;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,8DAA8D;QAC9D,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/E,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAA;QACjF,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,MAAM,OAAO,GAA2B,EAAE,CAAA;IAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAQ;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACtC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|