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 (

Users

{result.total.toLocaleString()} users total

{canEdit && }
) }