aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/routes/sb1-authorize/+server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/routes/sb1-authorize/+server.ts')
-rw-r--r--app/src/routes/sb1-authorize/+server.ts21
1 files changed, 12 insertions, 9 deletions
diff --git a/app/src/routes/sb1-authorize/+server.ts b/app/src/routes/sb1-authorize/+server.ts
index b3a0cf7..d6b8fbf 100644
--- a/app/src/routes/sb1-authorize/+server.ts
+++ b/app/src/routes/sb1-authorize/+server.ts
@@ -1,10 +1,11 @@
-import { error, redirect } from '@sveltejs/kit';
+import { error, redirect, json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';
import { db } from '$lib/server/db';
-import { syncSession } from '$lib/server/db/schema';
+import { SyncSessionTable } from '$lib/server/db/schema';
import { eq } from 'drizzle-orm';
import { SB1_ID, SB1_REDIRECT_URI, SB1_SECRET } from '$env/static/private';
import { Temporal } from "temporal-polyfill"
+import sb1 from "$lib/server/sb1"
export const GET: RequestHandler = async ({ url }) => {
const code = url.searchParams.get('code')
@@ -13,16 +14,19 @@ export const GET: RequestHandler = async ({ url }) => {
if (!code) error(400, "?code is missing")
if (!state) error(400, "?state is missing")
- const session = await db.select().from(syncSession).where(eq(syncSession.authzState, state))
+ const session = await db.select().from(SyncSessionTable).where(eq(SyncSessionTable.authzState, state))
const { id } = session[0]
+ if (!id) return error(500, "Ingen session")
const fd = new URLSearchParams()
+
fd.set("client_id", SB1_ID)
fd.set("client_secret", SB1_SECRET)
fd.set("redirect_uri", SB1_REDIRECT_URI)
fd.set("code", code)
fd.set("state", state)
fd.set("grant_type", "authorization_code")
+
const response = await fetch("https://api.sparebank1.no/oauth/token", {
method: "post",
headers: {
@@ -31,15 +35,14 @@ export const GET: RequestHandler = async ({ url }) => {
body: fd
})
- const json = await response.json()
+ const responseJson = await response.json()
if (response.ok) {
const epoch = Temporal.Now.instant().epochMilliseconds
- await db.update(syncSession).set({ tokens: json, accessTokenCreated: epoch.toString(), refreshTokenCreated: epoch.toString() }).where(eq(syncSession.id, id))
+ await db.update(SyncSessionTable).set({ tokens: responseJson, accessTokenCreated: epoch.toString(), refreshTokenCreated: epoch.toString() }).where(eq(SyncSessionTable.id, id))
+ await sb1.init()
redirect(302, "/")
} else {
- return new Response(json)
+ return json(responseJson)
}
-
- return new Response()
-} \ No newline at end of file
+}