import { randomBytes } from "node:crypto"; import { NextResponse } from "next/server"; import { WEBAPP_URL } from "@calcom/lib/constants"; export async function GET(req: Request) { const url = new URL(req.url); const sameSiteParam = url.searchParams.get("sameSite"); const useSecureCookies = WEBAPP_URL.startsWith("https://"); // Validate the param, default to "lax" let sameSite: "lax" | "strict" | "none" = "lax"; if (sameSiteParam === "strict" || (sameSiteParam === "none" && useSecureCookies)) { sameSite = sameSiteParam; } const token = randomBytes(32).toString("hex"); const res = NextResponse.json({ csrfToken: token }); res.cookies.set("calcom.csrf_token", token, { httpOnly: true, secure: useSecureCookies, sameSite, path: "/", }); return res; }