dvijaykrishnan's picture
Deployment fix for HF
ceb943f
Raw
History Blame Contribute Delete
1.17 kB
import { auth } from "./auth";
import { headers } from "next/headers";
/**
* Admin authorization utility
*
* This uses a simple environment variable-based allowlist of emails
* to authorize ops admins. This avoids modifying the core user schema
* and allows for quick rotation of admin access.
*/
/**
* Gets the admin allowlist from environment variables
*/
function getAdminEmails(): string[] {
return (process.env.ADMIN_EMAILS || "")
.split(",")
.map((e) => e.trim().toLowerCase())
.filter(Boolean);
}
/**
* Checks if an email is in the admin allowlist
*/
export function isAdminEmail(email: string | null | undefined): boolean {
if (!email) return false;
return getAdminEmails().includes(email.toLowerCase());
}
/**
* Gets the current session and verifies it belongs to an admin
* Returns the session if valid admin, null otherwise
*/
export async function getAdminSession() {
const session = await auth.api.getSession({
headers: await headers(),
});
if (!session?.user) {
return null;
}
if (!isAdminEmail(session.user.email)) {
return null;
}
return session;
}