ClauseGuard / web /lib /admin-guard.ts
gaurv007's picture
Admin panel: dashboard (stats), user management (search/plan change/ban), scan viewer (delete), team manager, API key viewer (revoke), activity logs — admin: ankygaur9972@gmail.com
8ab19de verified
raw
history blame
726 Bytes
import { createClient } from "@/lib/supabase/server";
import { redirect } from "next/navigation";
const ADMIN_EMAILS = ["ankygaur9972@gmail.com"];
export async function requireAdmin() {
const supabase = await createClient();
const { data: { user } } = await supabase.auth.getUser();
if (!user) redirect("/auth/login");
// Check email first (fast)
if (!ADMIN_EMAILS.includes(user.email || "")) {
redirect("/dashboard-pages/dashboard");
}
// Double check role in DB
const { data: profile } = await supabase
.from("profiles")
.select("role")
.eq("id", user.id)
.single();
if (profile?.role !== "admin") {
redirect("/dashboard-pages/dashboard");
}
return { user, supabase };
}