import { auth } from "@/auth"; import { db } from "@/lib/db"; import { hasPermission } from "@/lib/permissions"; import { redirect } from "next/navigation"; import { formatDate } from "@/lib/utils"; import { AddUserButton, EditUserButton } from "./user-form"; import { ConfirmDeleteButton } from "@/components/ui/confirm-delete-button"; import { GrantSuperUserButton } from "./grant-superuser-button"; import { deleteUser } from "./actions"; import type { Metadata } from "next"; export const metadata: Metadata = { title: "User Management" }; const ROLE_LABELS: Record = { TECHNICAL: "Technical", MANNING: "Manning", ACCOUNTS: "Accounts", MANAGER: "Manager", SUPERUSER: "SuperUser", AUDITOR: "Auditor", ADMIN: "Admin", }; export default async function AdminUsersPage() { const session = await auth(); if (!session?.user) redirect("/login"); if (!hasPermission(session.user.role, "manage_users")) redirect("/dashboard"); const users = await db.user.findMany({ orderBy: { createdAt: "desc" } }); return (

User Management

{users.map((user) => ( ))}
Employee ID Name Email Role Status Created
{user.employeeId} {user.name} {user.email} {ROLE_LABELS[user.role] ?? user.role} {user.isActive ? "Active" : "Inactive"} {formatDate(user.createdAt)} {user.role !== "SUPERUSER" && user.role !== "ADMIN" && ( )}
); }