import { redirect } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { getWatchedUserIds } from "@/lib/services/watch"; import { UserAccountInfo } from "../../_components/user-account-info"; import { UserBadgesReadonly } from "../../_components/user-badges-readonly"; import { UserHero } from "../../_components/user-hero"; import { UserSanctionTimeline } from "../../_components/user-sanction-timeline"; import { loadUserById } from "../../_lib/load-user"; import { loadUserSanctions } from "../../_lib/load-user-sanctions"; import { UserActivityLog } from "../../[id]/user-activity-log"; import { UserQuickActions } from "../../[id]/user-quick-actions"; import { UserRooms } from "../../[id]/user-rooms"; export default async function UserShowPage({ params, }: { params: Promise<{ locale: string; id: string }>; }) { const { id } = await params; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.USERS_VIEW, session.user.rank)) { redirect("/admin"); } const t = await getTranslations("pages.admin.users.detail"); const canEdit = canAccess(permissions, PERMS.USERS_EDIT, session.user.rank); const data = await loadUserById(id); const sanctions = await loadUserSanctions(data.user.id); const watched = await getWatchedUserIds(session.user.id); return (
{t("tabInfo")} {t("tabBadges", { count: data.user.badges.length })} {t("tabRooms", { count: data.roomCount })} {t("tabSanctions", { count: sanctions.events.length })} {t("tabActivity")}

Badges ({data.user.badges.length})

{canEdit && ( )}
); }