import crypto from "crypto"; import type { NextRequest } from "next/server"; export const USER_COOKIE_NAME = "teich_uid"; const USER_COOKIE_MAX_AGE_SECONDS = 60 * 60 * 24 * 365; export function getOrCreateUserId(request: NextRequest): { userId: string; shouldSetCookie: boolean; } { const existing = request.cookies.get(USER_COOKIE_NAME)?.value; if (existing) { return { userId: existing, shouldSetCookie: false }; } const userId = crypto.randomUUID(); return { userId, shouldSetCookie: true }; } export function userCookieOptions() { return { name: USER_COOKIE_NAME, httpOnly: true, sameSite: "lax" as const, secure: process.env.NODE_ENV === "production", path: "/", maxAge: USER_COOKIE_MAX_AGE_SECONDS, }; }