From 06d4cb030304cd214554aab5f5a03d8be8a0aa97 Mon Sep 17 00:00:00 2001 From: J Guerreiro Date: Thu, 23 Dec 2021 08:08:13 +0000 Subject: [PATCH] AccessControl: Disable user remove and user update roles when they do not have the permissions (#43429) * AccessControl: Disable user remove and update roles when they do not have the appropriate permissions * AccessControl: Ensure frontend tests pass in CI --- public/app/features/users/UsersTable.test.tsx | 1 + public/app/features/users/UsersTable.tsx | 9 +++------ public/app/features/users/state/actions.ts | 3 ++- public/app/types/user.ts | 5 ++--- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/public/app/features/users/UsersTable.test.tsx b/public/app/features/users/UsersTable.test.tsx index c37d7729b75..b5077170968 100644 --- a/public/app/features/users/UsersTable.test.tsx +++ b/public/app/features/users/UsersTable.test.tsx @@ -8,6 +8,7 @@ import { ConfirmModal } from '@grafana/ui'; jest.mock('app/core/core', () => ({ contextSrv: { hasPermission: () => true, + hasPermissionInMetadata: () => true, accessControlEnabled: () => false, }, })); diff --git a/public/app/features/users/UsersTable.tsx b/public/app/features/users/UsersTable.tsx index 92784d70234..7429a6320e0 100644 --- a/public/app/features/users/UsersTable.tsx +++ b/public/app/features/users/UsersTable.tsx @@ -15,9 +15,6 @@ export interface Props { const UsersTable: FC = (props) => { const { users, orgId, onRoleChange, onRemoveUser } = props; - const canUpdateRole = contextSrv.hasPermission(AccessControlAction.OrgUsersRoleUpdate); - const canRemoveFromOrg = contextSrv.hasPermission(AccessControlAction.OrgUsersRemove); - const rolePickerDisabled = !canUpdateRole; const [showRemoveModal, setShowRemoveModal] = useState(false); const [roleOptions, setRoleOptions] = useState([]); @@ -89,19 +86,19 @@ const UsersTable: FC = (props) => { onBuiltinRoleChange={(newRole) => onRoleChange(newRole, user)} getRoleOptions={getRoleOptions} getBuiltinRoles={getBuiltinRoles} - disabled={rolePickerDisabled} + disabled={!contextSrv.hasPermissionInMetadata(AccessControlAction.OrgUsersRoleUpdate, user)} /> ) : ( onRoleChange(newRole, user)} /> )} - {canRemoveFromOrg && ( + {contextSrv.hasPermissionInMetadata(AccessControlAction.OrgUsersRemove, user) && (