From 48b467a683e109248f53fc58355f77c6827a1032 Mon Sep 17 00:00:00 2001 From: jinapurapu <65002498+jinapurapu@users.noreply.github.com> Date: Fri, 7 Oct 2022 10:58:08 -0700 Subject: [PATCH] Added permission tooltips, UI and text improvements for Policies screens (#2368) --- .../src/common/SecureComponent/permissions.ts | 10 + .../screens/Console/Policies/ListPolicies.tsx | 55 ++++- .../Console/Policies/PolicyDetails.tsx | 190 +++++++++++------- portal-ui/tests/policies/users.json | 5 +- 4 files changed, 178 insertions(+), 82 deletions(-) diff --git a/portal-ui/src/common/SecureComponent/permissions.ts b/portal-ui/src/common/SecureComponent/permissions.ts index b26d286c9..30beb619f 100644 --- a/portal-ui/src/common/SecureComponent/permissions.ts +++ b/portal-ui/src/common/SecureComponent/permissions.ts @@ -515,3 +515,13 @@ export const enableDisableGroupPermissions = [ IAM_SCOPES.ADMIN_ENABLE_GROUP, IAM_SCOPES.ADMIN_DISABLE_GROUP, ]; +export const createPolicyPermissions = [IAM_SCOPES.ADMIN_CREATE_POLICY]; + +export const deletePolicyPermissions = [IAM_SCOPES.ADMIN_DELETE_POLICY]; + +export const listPolicyPermissions = [IAM_SCOPES.ADMIN_LIST_USER_POLICIES]; + +export const listGroupPermissions = [ + IAM_SCOPES.ADMIN_LIST_GROUPS, + IAM_SCOPES.ADMIN_GET_GROUP, +]; diff --git a/portal-ui/src/screens/Console/Policies/ListPolicies.tsx b/portal-ui/src/screens/Console/Policies/ListPolicies.tsx index e698eed97..9e6c9b489 100644 --- a/portal-ui/src/screens/Console/Policies/ListPolicies.tsx +++ b/portal-ui/src/screens/Console/Policies/ListPolicies.tsx @@ -39,8 +39,13 @@ import HelpBox from "../../../common/HelpBox"; import PageLayout from "../Common/Layout/PageLayout"; import { CONSOLE_UI_RESOURCE, + createPolicyPermissions, + deletePolicyPermissions, IAM_PAGES, IAM_SCOPES, + listPolicyPermissions, + permissionTooltipHelper, + viewPolicyPermissions, } from "../../../common/SecureComponent/permissions"; import { hasPermission, @@ -85,13 +90,25 @@ const ListPolicies = ({ classes }: IPoliciesProps) => { IAM_SCOPES.ADMIN_GET_POLICY, ]); - const deletePolicy = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_DELETE_POLICY, - ]); + const canDeletePolicy = hasPermission( + CONSOLE_UI_RESOURCE, + deletePolicyPermissions + ); - const displayPolicies = hasPermission(CONSOLE_UI_RESOURCE, [ - IAM_SCOPES.ADMIN_LIST_USER_POLICIES, - ]); + const canDisplayPolicies = hasPermission( + CONSOLE_UI_RESOURCE, + listPolicyPermissions + ); + + const canCreatePolicy = hasPermission( + CONSOLE_UI_RESOURCE, + createPolicyPermissions + ); + + const canViewPolicy = hasPermission( + CONSOLE_UI_RESOURCE, + viewPolicyPermissions + ); useEffect(() => { fetchRecords(); @@ -99,7 +116,7 @@ const ListPolicies = ({ classes }: IPoliciesProps) => { useEffect(() => { if (loading) { - if (displayPolicies) { + if (canDisplayPolicies) { api .invoke("GET", `/api/v1/policies`) .then((res: PolicyList) => { @@ -128,7 +145,7 @@ const ListPolicies = ({ classes }: IPoliciesProps) => { setLoading(false); } } - }, [loading, setLoading, setRecords, dispatch, displayPolicies]); + }, [loading, setLoading, setRecords, dispatch, canDisplayPolicies]); const fetchRecords = () => { setLoading(true); @@ -161,7 +178,7 @@ const ListPolicies = ({ classes }: IPoliciesProps) => { type: "delete", onClick: confirmDeletePolicy, sendOnlyId: true, - disableButtonFunction: () => !deletePolicy, + disableButtonFunction: () => !canDeletePolicy, }, ]; @@ -194,7 +211,16 @@ const ListPolicies = ({ classes }: IPoliciesProps) => { resource={CONSOLE_UI_RESOURCE} errorProps={{ disabled: true }} > - +