import { fetchAdminList } from "@/lib/admin-list"; import { canAccess, PERMS } from "@/lib/permissions"; import { CreateUserDialog } from "./_components/create-user-dialog"; import { UsersTable } from "./users-table"; export default async function UsersPage({ params: paramsPromise, searchParams, }: { params: Promise<{ locale: string }>; searchParams: Promise>; }) { const result = await fetchAdminList( { permission: PERMS.USERS_VIEW, model: "user", searchFields: ["username", "mail", "ipRegister", "ipCurrent"], select: { id: true, username: true, mail: true, rank: true, credits: true, pixels: true, online: true, motto: true, look: true, ipRegister: true, accountCreated: true, lastLogin: true, }, filterMap: { filter_rank: (v) => { const n = Number(v); if (!Number.isFinite(n)) return null; // For rank 7 the preset means "super admins" — match ≥ 7 instead of equals. return n >= 7 ? { rank: { gte: 7 } } : { rank: n }; }, filter_online: (v) => ({ online: v }), }, }, paramsPromise, searchParams, ); const canEdit = canAccess(result.permissions, PERMS.USERS_EDIT, result.rank); const canBan = canAccess(result.permissions, PERMS.USERS_BAN, result.rank); return (

{result.total.toLocaleString()} users total

{canEdit && }
); }