import type { APIRoute } from 'astro' import { getOAuthClient } from '../../../lib/context' import { getSession } from '../../../lib/session' export const GET: APIRoute = async (context) => { try { const oauthClient = getOAuthClient(context.cookies) const url = new URL(context.request.url) const params = new URLSearchParams(url.search) const session = getSession(context.cookies) if (session.did) { try { const oauthSession = await oauthClient.restore(session.did) if (oauthSession) await oauthSession.signOut() } catch (err) { console.warn('OAuth restore failed during callback:', err) } } const oauth = await oauthClient.callback(params) session.did = oauth.session.did await session.save() return context.redirect('/') } catch (err) { console.error('OAuth callback failed:', err) return context.redirect('/?error=login_failed') } }