AIvoices/frontend-nextjs/app/auth/callback/route.ts
2025-04-08 14:05:27 +01:00

47 lines
1.7 KiB
TypeScript

import { createUser, doesUserExist } from "@/db/users";
import { createClient } from "@/utils/supabase/server";
import { NextResponse } from "next/server";
import { defaultPersonalityId, defaultToyId } from "@/lib/data";
import { getBaseUrl } from "@/lib/utils";
export async function GET(request: Request) {
// The `/auth/callback` route is required for the server-side auth flow implemented
// by the SSR package. It exchanges an auth code for the user's session.
// https://supabase.com/docs/guides/auth/server-side/nextjs
const requestUrl = new URL(request.url);
const code = requestUrl.searchParams.get("code");
const queryParamsToyId = requestUrl.searchParams.get("toy_id");
// const origin = requestUrl.origin;
// const origin = "http://localhost:3000";
const origin = getBaseUrl();
if (code) {
const supabase = createClient();
await supabase.auth.exchangeCodeForSession(code);
const {
data: { user },
} = await supabase.auth.getUser();
// console.log("user+++++", user);
if (user) {
// console.log("user+++++2", user);
const userExists = await doesUserExist(supabase, user);
if (!userExists) {
// Create user if they don't exist
await createUser(supabase, user, {
language_code: "en-US",
personality_id:
user?.user_metadata?.personality_id ??
defaultPersonalityId,
});
return NextResponse.redirect(`${origin}/onboard`);
}
}
}
// URL to redirect to after sign up process completes
return NextResponse.redirect(`${origin}/home`);
}