diff --git a/src/db/util.ts b/src/db/util.ts index 25c5dd3..80cc579 100644 --- a/src/db/util.ts +++ b/src/db/util.ts @@ -15,11 +15,11 @@ export async function createUser(sub: number, did: string) { return user; } -export async function getUser(did: string) { +export async function getUser(sub: number) { return await db .select({ did: usersTable.did, sub: usersTable.sub }) .from(usersTable) - .where(eq(usersTable.did, did)) + .where(eq(usersTable.sub, sub)) .limit(1) .then((rows) => { return rows[0] || null; diff --git a/src/index.ts b/src/index.ts index e47aa8c..2298ff3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,36 +11,34 @@ Bun.serve({ return Response.redirect(redirectUrl.toString(), 302); }, "/auth/:provider/callback": async (req) => { - const did = "did:plc:lgb2xgd64n3swnh7jbtgpvhl"; - const { callback } = await import(`./auth/${req.params.provider}/client`); let claims = await callback(new URL(req.url)); if (!claims) { return new Response("Unauthorized", { status: 401 }); } else { - const userInfo = await getUser(did); + const userInfo = await getUser(claims.sub); if (userInfo) { // user exists - return Response.json(userInfo); + return Response.redirect(`/api/users/${claims.sub}`, 302); } else { // create new user return Response.json( - await createUser(claims.sub, did).then((user) => user) + await createUser( + claims.sub, + "did:plc:lgb2xgd64n3swnh7jbtgpvhl" + ).then((user) => user) ); } } }, - "/api/users/:did": async (req) => { - console.log("Fetching user with DID:", req.params.did); + "/api/users/:sub": async (req) => { + if (!req.params.sub) { + return new Response("User sub is required", { status: 400 }); + } - return Response.json(await getUser(req.params.did)); + return Response.json(await getUser(Number(req.params.sub))); }, }, - websocket: { - open() {}, - message() {}, - close() {}, - }, fetch(): Response { return new Response("Page not found.", { status: 404,