import Link from "next/link"; import Image from "next/image"; import { redirect } from "next/navigation"; import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth"; import { isAdminEmail } from "@/lib/admin"; import { userRepo } from "@/server/repositories/user.repo"; type Tab = "ALL" | "ACTIVE" | "SUSPENDED"; const TABS: { key: Tab; label: string }[] = [ { key: "ALL", label: "Semua" }, { key: "ACTIVE", label: "Aktif" }, { key: "SUSPENDED", label: "Suspended" }, ]; interface PageProps { searchParams: Promise<{ tab?: string; q?: string }>; } export default async function AdminUsersPage({ searchParams }: PageProps) { const session = await getServerSession(authOptions); if (!session?.user) redirect("/login?callbackUrl=/admin/users"); if (!isAdminEmail(session.user.email)) { return (
Halaman ini hanya untuk admin SeTrip.
Cari user, lihat history booking & trip, dan suspend akun yang melakukan abuse (scam, harassment, TOS violation).
{q ? `Tidak ada user yang cocok dengan "${q}".` : "Tidak ada user pada tab ini."}
{u.name}
{u.suspended && ( Suspended )} {u.organizerVerification?.status === "APPROVED" && ( ✓ Organizer )}{u.email}
Bergabung{" "} {u.createdAt.toLocaleDateString("id-ID", { day: "numeric", month: "short", year: "numeric", })} {" · "} {u._count.trips} trip dibuat, {u._count.participations}{" "} booking