disable editing my own user

This commit is contained in:
Nate Kelley 2025-01-23 11:05:07 -07:00
parent b658eb2728
commit aa190a73de
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
3 changed files with 32 additions and 17 deletions

View File

@ -1,16 +1,20 @@
import { OrganizationUser, useUpdateUser } from '@/api';
import { type BusterUser, type OrganizationUser, useUpdateUser } from '@/api';
import React from 'react';
import { Text, Title } from '@/components/text';
import { Card, Select } from 'antd';
import { useMemoizedFn } from 'ahooks';
import { AppTooltip } from '@/components';
export const UserDefaultAccess: React.FC<{
user: OrganizationUser;
isAdmin: boolean;
myUser: BusterUser;
refetchUser: () => void;
}> = ({ user, isAdmin, refetchUser }) => {
}> = ({ user, isAdmin, myUser, refetchUser }) => {
const { mutateAsync, isPending } = useUpdateUser();
const userIsMe = user.id === myUser.id;
const onChange = useMemoizedFn(async (value: string) => {
await mutateAsync({ userId: user.id, role: value as OrganizationUser['role'] });
refetchUser();
@ -25,6 +29,7 @@ export const UserDefaultAccess: React.FC<{
onChange={onChange}
isLoading={isPending}
isAdmin={isAdmin}
userIsMe={userIsMe}
/>
</div>
);
@ -42,25 +47,38 @@ const DefaultAccessCard = React.memo(
role,
onChange,
isLoading,
isAdmin
isAdmin,
userIsMe
}: {
role: OrganizationUser['role'];
onChange: (role: OrganizationUser['role']) => void;
isLoading: boolean;
isAdmin: boolean;
userIsMe: boolean;
}) => {
const isDisabled = !isAdmin || userIsMe;
return (
<Card size="small">
<div className="flex items-center justify-between">
<Text>Default Access</Text>
<Select
options={accessOptions}
value={role}
onChange={onChange}
loading={isLoading}
disabled={!isAdmin}
/>
<AppTooltip
title={
isDisabled
? userIsMe
? 'You cannot change your own access'
: 'Only admins can change access'
: undefined
}>
<Select
options={accessOptions}
value={role}
onChange={onChange}
loading={isLoading}
disabled={isDisabled}
/>
</AppTooltip>
</div>
</Card>
);

View File

@ -10,12 +10,13 @@ import { UserDatasetSearch } from './UserDatasetSearch';
export const UserOverviewController = React.memo(({ userId }: { userId: string }) => {
const { data: user, refetch: refetchUser } = useGetUser({ userId });
const isAdmin = useUserConfigContextSelector((x) => x.isAdmin);
const myUser = useUserConfigContextSelector((x) => x.user);
if (!user) return null;
if (!user || !myUser) return null;
return (
<>
<UserDefaultAccess user={user} isAdmin={isAdmin} refetchUser={refetchUser} />
<UserDefaultAccess user={user} myUser={myUser} isAdmin={isAdmin} refetchUser={refetchUser} />
<UserLineageHeader className="!mt-[48px]" user={user} />
<UserDatasetSearch user={user} />
</>

View File

@ -1,8 +1,4 @@
import {
useUpdateUserPermissionGroups,
useUpdateUserTeams,
type BusterUserPermissionGroup
} from '@/api/buster_rest';
import { useUpdateUserPermissionGroups, type BusterUserPermissionGroup } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';
import {
BusterInfiniteList,