import { redirect } from "next/navigation"; import { inArray } from "drizzle-orm"; import { getSession } from "@/lib/session"; import { db } from "@/db"; import { users } from "@/db/schema"; import { can, ROLE_LABELS, STAFF_ROLES } from "@/lib/rbac"; import { removeAdmin } from "../actions"; import { InviteAdminForm } from "./InviteAdminForm"; export const dynamic = "force-dynamic"; function initialsOf(name: string) { return name.split(/\s+/).map((w) => w[0]).join("").slice(0, 2).toUpperCase(); } export default async function AdminsPage() { const session = await getSession(); if (!can(session?.user.role, "manageAdmins")) { redirect("/backend"); } const admins = await db .select({ id: users.id, name: users.name, email: users.email, role: users.role }) .from(users) .where(inArray(users.role, STAFF_ROLES)); return (
Administrateurs ({admins.length})
{admins.map((a) => { const isAdmin = a.role === "admin"; return (
{initialsOf(a.name)}
{a.name}
{a.email}
{ROLE_LABELS[a.role]} {a.id !== Number(session?.user.id) && (
)}
); })}

Inviter un administrateur

); }