From 333ca0a827a69c9740d83a66584546bfc954a994 Mon Sep 17 00:00:00 2001 From: jinapurapu <65002498+jinapurapu@users.noreply.github.com> Date: Wed, 5 Oct 2022 16:34:31 -0700 Subject: [PATCH] Permissions Tooltip guidance for ListUsers and UserDetails screens (#2347) --- .../src/common/SecureComponent/permissions.ts | 32 ++++ .../src/screens/Console/Users/ListUsers.tsx | 155 +++++++++++++----- .../src/screens/Console/Users/UserDetails.tsx | 133 ++++++++++++--- portal-ui/tests/policies/users.json | 3 +- 4 files changed, 260 insertions(+), 63 deletions(-) diff --git a/portal-ui/src/common/SecureComponent/permissions.ts b/portal-ui/src/common/SecureComponent/permissions.ts index 62253687b..37f836099 100644 --- a/portal-ui/src/common/SecureComponent/permissions.ts +++ b/portal-ui/src/common/SecureComponent/permissions.ts @@ -447,3 +447,35 @@ export const permissionTooltipHelper = (scopes: string[], name: string) => { "." ); }; + +export const listUsersPermissions = [IAM_SCOPES.ADMIN_LIST_USERS]; +export const viewUserPermissions = [IAM_SCOPES.ADMIN_GET_USER]; +export const addUserToGroupPermissions = [IAM_SCOPES.ADMIN_ADD_USER_TO_GROUP]; +export const deleteUserPermissions = [IAM_SCOPES.ADMIN_DELETE_USER]; +export const enableUserPermissions = [IAM_SCOPES.ADMIN_ENABLE_USER]; +export const disableUserPermissions = [IAM_SCOPES.ADMIN_DISABLE_USER]; +export const assignIAMPolicyPermissions = [ + IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY, + IAM_SCOPES.ADMIN_LIST_USER_POLICIES, + IAM_SCOPES.ADMIN_GET_POLICY, +]; + +export const assignGroupPermissions = [ + IAM_SCOPES.ADMIN_ADD_USER_TO_GROUP, + IAM_SCOPES.ADMIN_REMOVE_USER_FROM_GROUP, + IAM_SCOPES.ADMIN_LIST_GROUPS, + IAM_SCOPES.ADMIN_ENABLE_USER, +]; + +export const getGroupPermissions = [IAM_SCOPES.ADMIN_GET_GROUP]; + +export const enableDisableUserPermissions = [ + IAM_SCOPES.ADMIN_ENABLE_USER, + IAM_SCOPES.ADMIN_DISABLE_USER, +]; + +export const editServiceAccountPermissions = [ + IAM_SCOPES.ADMIN_LIST_SERVICEACCOUNTS, + IAM_SCOPES.ADMIN_UPDATE_SERVICEACCOUNT, + IAM_SCOPES.ADMIN_REMOVE_SERVICEACCOUNT, +]; diff --git a/portal-ui/src/screens/Console/Users/ListUsers.tsx b/portal-ui/src/screens/Console/Users/ListUsers.tsx index 75ec9b423..a07b60e34 100644 --- a/portal-ui/src/screens/Console/Users/ListUsers.tsx +++ b/portal-ui/src/screens/Console/Users/ListUsers.tsx @@ -43,10 +43,15 @@ import PageLayout from "../Common/Layout/PageLayout"; import SearchBox from "../Common/SearchBox"; import withSuspense from "../Common/Components/withSuspense"; import { + addUserToGroupPermissions, CONSOLE_UI_RESOURCE, + deleteUserPermissions, IAM_PAGES, IAM_SCOPES, + listUsersPermissions, + permissionTooltipHelper, S3_ALL_RESOURCES, + viewUserPermissions, } from "../../../common/SecureComponent/permissions"; import { @@ -88,21 +93,19 @@ const ListUsers = ({ classes }: IUsersProps) => { const [filter, setFilter] = useState(""); const [checkedUsers, setCheckedUsers] = useState([]); - const displayListUsers = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_LIST_USERS, - ]); + const displayListUsers = hasPermission( + CONSOLE_UI_RESOURCE, + listUsersPermissions + ); - const viewUser = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_GET_USER, - ]); + const viewUser = hasPermission(CONSOLE_UI_RESOURCE, viewUserPermissions); - const addUserToGroup = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_ADD_USER_TO_GROUP, - ]); + const addUserToGroup = hasPermission( + CONSOLE_UI_RESOURCE, + addUserToGroupPermissions + ); - const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_DELETE_USER, - ]); + const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, deleteUserPermissions); const closeDeleteModalAndRefresh = (refresh: boolean) => { setDeleteOpen(false); @@ -216,7 +219,18 @@ const ListUsers = ({ classes }: IUsersProps) => { matchAll errorProps={{ disabled: true }} > - +