import { NextRequest, NextResponse } from 'next/server'; import { verifyPortalToken, PORTAL_COOKIE } from '@/lib/portal/auth'; import { env } from '@/lib/env'; import { logger } from '@/lib/logger'; export async function GET(req: NextRequest): Promise { try { const token = req.nextUrl.searchParams.get('token'); if (!token) { return NextResponse.redirect(new URL('/portal/login?error=missing_token', env.APP_URL)); } const session = await verifyPortalToken(token); if (!session) { return NextResponse.redirect(new URL('/portal/login?error=invalid_token', env.APP_URL)); } const response = NextResponse.redirect(new URL('/portal/dashboard', env.APP_URL)); response.cookies.set(PORTAL_COOKIE, token, { httpOnly: true, secure: process.env.NODE_ENV === 'production', sameSite: 'lax', path: '/', maxAge: 60 * 60 * 24, // 24 hours }); logger.info({ clientId: session.clientId }, 'Portal session created'); return response; } catch (error) { logger.error({ error }, 'Portal token verification failed'); return NextResponse.redirect(new URL('/portal/login?error=server_error', env.APP_URL)); } }