From dd198349fb71431e92546d098c1f85cc02897e2d Mon Sep 17 00:00:00 2001 From: dmitriylaukhin Date: Sat, 25 Apr 2026 13:12:47 +0500 Subject: [PATCH] Fix impersonation: hard navigation + stop impersonating banner Co-Authored-By: Claude Sonnet 4.6 --- src/app/(student)/layout.tsx | 4 ++ .../admin/stop-impersonate-banner.tsx | 40 +++++++++++++++++++ src/components/admin/users-table.tsx | 5 +-- 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 src/components/admin/stop-impersonate-banner.tsx diff --git a/src/app/(student)/layout.tsx b/src/app/(student)/layout.tsx index 058a13e..4860840 100644 --- a/src/app/(student)/layout.tsx +++ b/src/app/(student)/layout.tsx @@ -4,6 +4,7 @@ import { redirect } from "next/navigation"; import Link from "next/link"; import { LogoutButton } from "@/components/layout/logout-button"; import { getSetting } from "@/lib/settings"; +import { StopImpersonateBanner } from "@/components/admin/stop-impersonate-banner"; export default async function StudentLayout({ children }: { children: React.ReactNode }) { const session = await auth.api.getSession({ headers: await headers() }); @@ -15,8 +16,11 @@ export default async function StudentLayout({ children }: { children: React.Reac if (maintenance === "true") redirect("/maintenance"); } + const isImpersonating = !!(session.session as { impersonatedBy?: string }).impersonatedBy; + return (
+ {isImpersonating && }
+ + Вы просматриваете платформу как {userName} + + +
+ ); +} diff --git a/src/components/admin/users-table.tsx b/src/components/admin/users-table.tsx index 01ff35c..3fdd221 100644 --- a/src/components/admin/users-table.tsx +++ b/src/components/admin/users-table.tsx @@ -100,9 +100,8 @@ function ImpersonateButton({ userId }: { userId: string }) { setLoading(true); try { await authClient.admin.impersonateUser({ userId }); - router.push("/dashboard"); - router.refresh(); - } finally { + window.location.href = "/dashboard"; + } catch { setLoading(false); } }