import { SignJWT, jwtVerify } from 'jose'; import { cookies } from 'next/headers'; const PORTAL_SECRET = new TextEncoder().encode(process.env.BETTER_AUTH_SECRET); export const PORTAL_COOKIE = 'portal_session'; export interface PortalSession { clientId: string; portId: string; email: string; } export async function createPortalToken(session: PortalSession): Promise { return new SignJWT(session as unknown as Record) .setProtectedHeader({ alg: 'HS256' }) .setExpirationTime('24h') .setIssuedAt() .sign(PORTAL_SECRET); } export async function verifyPortalToken(token: string): Promise { try { const { payload } = await jwtVerify(token, PORTAL_SECRET); return payload as unknown as PortalSession; } catch { return null; } } export async function getPortalSession(): Promise { const cookieStore = await cookies(); const token = cookieStore.get(PORTAL_COOKIE)?.value; if (!token) return null; return verifyPortalToken(token); }