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 }} > - +