Spaces:
Runtime error
Runtime error
Andrew
commited on
Commit
·
cf90a38
1
Parent(s):
087512c
feat(auth): add shared OAuth redirect and CSRF state helpers
Browse files
src/lib/server/authHelpers.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { base } from "$app/paths";
|
| 2 |
+
import { config } from "$lib/server/config";
|
| 3 |
+
import { generateCsrfToken } from "./auth";
|
| 4 |
+
import type { RequestEvent } from "@sveltejs/kit";
|
| 5 |
+
|
| 6 |
+
// Build a redirect URI for OAuth callbacks
|
| 7 |
+
export function buildRedirectURI(request: RequestEvent["request"], url: URL): string {
|
| 8 |
+
const referer = request.headers.get("referer");
|
| 9 |
+
let redirectURI = `${(referer ? new URL(referer) : url).origin}${base}/login/callback`;
|
| 10 |
+
|
| 11 |
+
if (url.searchParams.has("callback")) {
|
| 12 |
+
const callback = url.searchParams.get("callback") || redirectURI;
|
| 13 |
+
if (config.ALTERNATIVE_REDIRECT_URLS.includes(callback)) {
|
| 14 |
+
redirectURI = callback;
|
| 15 |
+
}
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
return redirectURI;
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
// Generate a CSRF token wrapped in base64 for OAuth state parameter
|
| 22 |
+
export async function createOAuthState(sessionId: string, redirectURI: string): Promise<string> {
|
| 23 |
+
return await generateCsrfToken(sessionId, redirectURI);
|
| 24 |
+
}
|