ChatGPT-Next-Web/app/api/supabase.ts
2025-06-25 23:25:07 +07:00

52 lines
1.4 KiB
TypeScript

import { createClient } from "@supabase/supabase-js";
import { NextRequest, NextResponse } from "next/server";
import cookie from "cookie";
const SUPABASE_URL = process.env.SUPABASE_URL!;
const SUPABASE_ANON_KEY = process.env.SUPABASE_ANON_KEY!;
const AUTHEN_PAGE = process.env.AUTHEN_PAGE!;
export async function handle(
req: NextRequest,
{ params }: { params: { path: string[] } },
) {
// Parse cookies using the 'cookie' library
const cookies = cookie.parse(req.headers.get("cookie") || "");
const authToken = cookies["sb-zzgkylsbdgwoohcbompi-auth-token"];
console.log("[Supabase] authToken", authToken);
if (!authToken) {
return NextResponse.redirect(AUTHEN_PAGE, 302);
}
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
global: {
headers: {
Authorization: `Bearer ${authToken}`,
},
},
});
try {
const { data, error } = await supabase.auth.getUser();
console.log("[Supabase] user", data?.user);
if (error || !data?.user) {
return NextResponse.json(
{ error: error?.message || "Error fetching user data" },
{ status: 401 },
);
}
return NextResponse.json({ user: data.user }, { status: 200 });
} catch (err) {
console.error("Error fetching user data from Supabase:", err);
return NextResponse.json(
{ error: "Internal server error" },
{ status: 500 },
);
}
}