diff --git a/src/components/admin/users-table.tsx b/src/components/admin/users-table.tsx index 48fd2b3..01ff35c 100644 --- a/src/components/admin/users-table.tsx +++ b/src/components/admin/users-table.tsx @@ -1,8 +1,10 @@ "use client"; import { useState } from "react"; +import { useRouter } from "next/navigation"; import Link from "next/link"; import { Badge } from "@/components/ui/badge"; +import { authClient } from "@/lib/auth-client"; type Enrollment = { courseId: string; @@ -90,6 +92,38 @@ function UserPopup({ user }: { user: UserRow }) { ); } +function ImpersonateButton({ userId }: { userId: string }) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + + async function handleImpersonate() { + setLoading(true); + try { + await authClient.admin.impersonateUser({ userId }); + router.push("/dashboard"); + router.refresh(); + } finally { + setLoading(false); + } + } + + return ( + + ); +} + export function UsersTable({ users }: { users: UserRow[] }) { const [hoveredId, setHoveredId] = useState(null); @@ -134,21 +168,24 @@ export function UsersTable({ users }: { users: UserRow[] }) { {new Date(user.createdAt).toLocaleDateString("ru-RU")} - {/* Hover popup trigger */} + {/* Actions */} -
setHoveredId(user.id)} - onMouseLeave={() => setHoveredId(null)} - > - - {hoveredId === user.id && } + + {hoveredId === user.id && } +