Add impersonate banner (#14734)

Related to https://github.com/twentyhq/twenty/pull/14360

<img width="1511" height="468" alt="Screenshot 2025-09-26 at 12 16 46"
src="https://github.com/user-attachments/assets/33e0e0b5-1226-455d-90f2-e4fc3deef7a8"
/>

@Bonapara, let you tell me if wording and banner color are ok. This
banner is displayed when a user is impersonating an other user
This commit is contained in:
Etienne
2025-09-29 17:10:46 +02:00
committed by GitHub
parent 462e2015b1
commit b74ed36ce3
4 changed files with 61 additions and 1 deletions
@@ -1,3 +1,4 @@
import { isImpersonatingState } from '@/auth/states/isImpersonatingState';
import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag';
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
@@ -5,6 +6,7 @@ import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/Drop
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
import { t } from '@lingui/core/macro';
import { useRecoilValue } from 'recoil';
import { IconDotsVertical, IconSpy, IconTrash } from 'twenty-ui/display';
import { LightIconButton } from 'twenty-ui/input';
import { MenuItem } from 'twenty-ui/navigation';
@@ -24,7 +26,9 @@ export const ManageMembersDropdownMenu = ({
onImpersonate,
}: ManageMembersDropdownMenuProps) => {
const { closeDropdown } = useCloseDropdown();
const canImpersonate = useHasPermissionFlag(PermissionFlagType.IMPERSONATE);
const isImpersonating = useRecoilValue(isImpersonatingState);
const canImpersonate =
useHasPermissionFlag(PermissionFlagType.IMPERSONATE) && !isImpersonating;
return (
<Dropdown