import { createClient } from "@/utils/supabase/server"; import { redirect } from "next/navigation"; import { updateAdminRole, removeAdmin } from "./actions"; export default async function AdminUsersPage() { const supabase = await createClient(); // Verify current user is super_admin const { data: { user }, } = await supabase.auth.getUser(); if (!user) redirect("/admin/login"); const { data: currentAdmin } = await supabase .from("admin_users") .select("role") .eq("user_id", user.id) .single(); if (!currentAdmin || currentAdmin.role !== "super_admin") { redirect("/admin"); } const { data: adminUsers } = await supabase .from("admin_users") .select("id, user_id, email, role, created_at") .order("created_at"); return (

Admin Users

{adminUsers?.map((adminUser) => ( ))}
Email Role Added Actions
{adminUser.email}
{new Date(adminUser.created_at).toLocaleDateString()} {adminUser.user_id !== user.id && (
{(["editor", "admin", "super_admin"] as const) .filter((r) => r !== adminUser.role) .map((role) => (
))}
)}
{(!adminUsers || adminUsers.length === 0) && (

No admin users found.

)}

Add Admin User

The user must first have a Supabase Auth account. Create one in the Supabase dashboard, then add their email here.

{ "use server"; const { createClient } = await import( "@/utils/supabase/server" ); const { revalidatePath } = await import("next/cache"); const supabase = await createClient(); const email = formData.get("email") as string; const role = formData.get("role") as string; const userId = formData.get("user_id") as string; await supabase.from("admin_users").insert({ email, role, user_id: userId, }); revalidatePath("/admin/users"); }} className="space-y-4" >
); }