import { redirect } from "next/navigation"; import { createServerNeonClient } from "@/lib/neon/server"; type ClaimValue = string | number | boolean | null | undefined; export type DashboardSessionUser = { id: string; email?: string | null; user_metadata?: Record | null; app_metadata?: Record | null; }; function claimRecord(value: unknown): Record | null { if (!value || typeof value !== "object" || Array.isArray(value)) return null; return value as Record; } export async function getDashboardSessionUser(): Promise { const neon = await createServerNeonClient(); const { data, error } = await neon.auth.getUser(); const user = error ? null : data.user; const id = user?.id; if (!id) redirect("/login"); return { id, email: user.email, user_metadata: claimRecord(user.user_metadata), app_metadata: claimRecord(user.app_metadata), }; }