19 lines
829 B
TypeScript
19 lines
829 B
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { proxyRequest } from "@/lib/backend";
|
|
import { setAuthCookies } from "@/lib/auth-cookies";
|
|
|
|
export async function POST(
|
|
req: NextRequest,
|
|
{ params }: { params: { provider: string } },
|
|
) {
|
|
const res = await proxyRequest(req, `auth/social/${params.provider}/callback`);
|
|
const payload = await res.clone().json().catch(() => null) as { data?: { accessToken?: string; refreshToken?: string; [key: string]: unknown } } | null;
|
|
if (res.ok && payload?.data?.accessToken && payload.data.refreshToken) {
|
|
const { accessToken, refreshToken, ...safeData } = payload.data;
|
|
const safeRes = NextResponse.json({ ...payload, data: safeData }, { status: res.status });
|
|
setAuthCookies(safeRes, accessToken, refreshToken);
|
|
return safeRes;
|
|
}
|
|
return res;
|
|
}
|