import { SignJWT, jwtVerify } from "jose"; import { cookies } from "next/headers"; export const SESSION_COOKIE = "sl_session"; function getSecret(): Uint8Array { const secret = process.env.SESSION_SECRET; if (!secret) throw new Error("SESSION_SECRET env var is required"); return new TextEncoder().encode(secret); } export async function createSessionToken(): Promise { return new SignJWT({}) .setProtectedHeader({ alg: "HS256" }) .setExpirationTime("7d") .sign(getSecret()); } export async function verifySessionToken(token: string): Promise { try { await jwtVerify(token, getSecret()); return true; } catch { return false; } } export async function getSession(): Promise { const cookieStore = await cookies(); const token = cookieStore.get(SESSION_COOKIE)?.value; if (!token) return false; return verifySessionToken(token); }