From 8e8c5fc525536f4f7b393b6347b56499820e00c3 Mon Sep 17 00:00:00 2001 From: Yusuf Bera Ertan Date: Sat, 24 Aug 2024 14:25:28 +0300 Subject: [PATCH] feat: dont use arctic i hate libraries i hate libraries --- bun.lockb | Bin 140676 -> 138860 bytes package.json | 2 +- src/lib/guestbookAuth.ts | 26 +++++++++++++++++++++++--- src/routes/guestbook/+page.server.ts | 2 +- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index 6f67b2cbd7ccd3eefcff39c680aa55eb9d6ce625..4fd6ee774806c89fd55bf651cdd095f995147143 100644 GIT binary patch delta 24687 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 VyPYQZ9|xE}W~h4R5A}`t{|CgQn~eYf delta 25600 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 diff --git a/package.json b/package.json index a704149..d41fad2 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "type": "module", "dependencies": { "@std/toml": "npm:@jsr/std__toml", - "arctic": "^2.0.0-next.5", + "base64url": "^3.0.1", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0" }, diff --git a/src/lib/guestbookAuth.ts b/src/lib/guestbookAuth.ts index 493892d..3bf9d67 100644 --- a/src/lib/guestbookAuth.ts +++ b/src/lib/guestbookAuth.ts @@ -2,12 +2,32 @@ import { dev } from "$app/environment"; import { env } from "$env/dynamic/private"; import { PUBLIC_BASE_URL } from "$env/static/public"; import type { Cookies } from "@sveltejs/kit"; -import { Discord, generateState, GitHub } from "arctic"; +import base64url from "base64url"; export const callbackUrl = `${PUBLIC_BASE_URL}/guestbook/` -export const discord = new Discord(env.DISCORD_CLIENT_ID, "", callbackUrl) -export const github = new GitHub(env.GITHUB_CLIENT_ID, "", callbackUrl) +export const discord = { + getAuthUrl: (state: string, scopes: string[] = []) => { + const client_id = env.DISCORD_CLIENT_ID + const redir_uri = encodeURIComponent(callbackUrl) + const scope = scopes.join("+") + return `https://discord.com/oauth2/authorize?client_id=${client_id}&response_type=code&redirect_uri=${redir_uri}&scope=${scope}&state=${state}` + } +} +export const github = { + getAuthUrl: (state: string, scopes: string[] = []) => { + const client_id = env.GITHUB_CLIENT_ID + const redir_uri = encodeURIComponent(callbackUrl) + const scope = encodeURIComponent(scopes.join(" ")) + return `https://github.com/login/oauth/authorize?client_id=${client_id}&redirect_uri=${redir_uri}&scope=${scope}&state=${state}` + } +} + +export const generateState = () => { + const randomValues = new Uint8Array(32) + crypto.getRandomValues(randomValues) + return base64url(Buffer.from(randomValues)) +} export const createAuthUrl = (authCb: (state: string) => URL, cookies: Cookies) => { const state = generateState() diff --git a/src/routes/guestbook/+page.server.ts b/src/routes/guestbook/+page.server.ts index 69112e4..5bc1052 100644 --- a/src/routes/guestbook/+page.server.ts +++ b/src/routes/guestbook/+page.server.ts @@ -40,7 +40,7 @@ const postAction = (client: any, scopes: string[]) => { const params = new URLSearchParams({ author, content }) scopedCookies.set("postData", params.toString()) // get auth url to redirect user to - const authUrl = await auth.createAuthUrl((state) => client.createAuthorizationURL(state, scopes), cookies) + const authUrl = auth.createAuthUrl(client.getAuthUrl, cookies) redirect(303, authUrl) } }