import { notFound } from "next/navigation"; import { Pool } from "pg"; import { getSession } from "@/lib/auth-utils"; import { UserForm } from "@/components/admin/users/user-form"; import { UserSessions } from "@/components/admin/users/user-sessions"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { RoleBadge } from "@/components/admin/users/role-badge"; import { Badge } from "@/components/ui/badge"; const pool = new Pool({ connectionString: process.env.DATABASE_URL, }); interface PageProps { params: Promise<{ id: string }>; } async function getUser(id: string) { const result = await pool.query( `SELECT id, name, email, email_verified, image, role, banned, banned_reason, ban_expires, requires_setup, created_at, updated_at FROM "user" WHERE id = $1`, [id] ); return result.rows[0] || null; } async function getUserSessions(userId: string) { const result = await pool.query( `SELECT id, ip_address, user_agent, created_at, expires_at FROM "session" WHERE user_id = $1 ORDER BY created_at DESC`, [userId] ); return result.rows; } export default async function UserDetailPage({ params }: PageProps) { const { id } = await params; const session = await getSession(); const user = await getUser(id); if (!user) { notFound(); } const sessions = await getUserSessions(id); const isCurrentUser = session?.user?.id === id; return (

{user.name}

{user.banned && Banned} {isCurrentUser && You}

{user.email}

Details Sessions ({sessions.length}) User Details Update user information and role Active Sessions View and manage user's active sessions
); }