From 7dbc88884804596431d1ea93076049573db54fdf Mon Sep 17 00:00:00 2001 From: Anshumancanrock <109489361+Anshumancanrock@users.noreply.github.com> Date: Sun, 30 Nov 2025 03:08:31 +0530 Subject: [PATCH] fix: End Impersonation Without Logging Out Admin (#25395) Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> --- .../components/ImpersonatingBanner.tsx | 24 +++++++------------ .../lib/ImpersonationProvider.ts | 4 +--- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx b/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx index a226b7e7e8..82dc2492d6 100644 --- a/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx +++ b/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx @@ -12,29 +12,21 @@ function ImpersonatingBanner({ data }: ImpersonatingBannerProps) { if (!data?.user.impersonatedBy) return null; const returnToId = data.user.impersonatedBy.id; - const canReturnToSelf = data.user.impersonatedBy.role == "ADMIN" || data.user?.org?.id; - return ( <> { - e.preventDefault(); - signIn("impersonation-auth", { returnToId }); - }}> - - - ) : ( - +
{ + e.preventDefault(); + signIn("impersonation-auth", { returnToId }); + }}> + +
} /> diff --git a/packages/features/ee/impersonation/lib/ImpersonationProvider.ts b/packages/features/ee/impersonation/lib/ImpersonationProvider.ts index 7ba23bcaa7..2f601252b4 100644 --- a/packages/features/ee/impersonation/lib/ImpersonationProvider.ts +++ b/packages/features/ee/impersonation/lib/ImpersonationProvider.ts @@ -301,13 +301,11 @@ async function isReturningToSelf({ session, creds }: { session: Session | null; }); if (returningUser) { - // Skip for none org users const inOrg = returningUser.organizationId || // Keep for backwards compatibility returningUser.profiles.some((profile) => profile.organizationId !== undefined); // New way of seeing if the user has a profile in orgs. - if (returningUser.role !== UserPermissionRole.ADMIN && !inOrg) return; - const hasTeams = returningUser.teams.length >= 1; + if (returningUser.role !== UserPermissionRole.ADMIN && !inOrg && !hasTeams) return; const profile = await findProfile(returningUser); return {