import { type NextRequest, NextResponse } from "next/server"; import { CAREGIVER_SESSION_COOKIE, createCaregiverSessionCookieValue, getCaregiverSession, } from "@/lib/session"; import { prisma } from "@/lib/prisma"; function normalizeRedirectPath(redirectTo?: string | null) { if (!redirectTo || !redirectTo.startsWith("/") || redirectTo.startsWith("//")) { return "/"; } return redirectTo; } export async function GET(request: NextRequest) { const redirectTo = normalizeRedirectPath( request.nextUrl.searchParams.get("redirectTo"), ); const existingCaregiver = await getCaregiverSession(); const response = NextResponse.redirect(new URL(redirectTo, request.url)); if (existingCaregiver) { return response; } const { sessionToken, options } = createCaregiverSessionCookieValue(); await prisma.caregiverAccount.upsert({ where: { sessionToken }, update: {}, create: { sessionToken }, }); response.cookies.set({ name: CAREGIVER_SESSION_COOKIE, value: sessionToken, ...options, }); return response; }