From 207429c4a8863bce7e53082179e3e3b78c67b073 Mon Sep 17 00:00:00 2001 From: Stephen Smith Date: Tue, 16 Nov 2021 21:10:28 -0500 Subject: [PATCH] 18123: Hide add member button unless the user can_manage the group. Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- .../group-details-panel.tsx | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/views/group-details-panel/group-details-panel.tsx b/src/views/group-details-panel/group-details-panel.tsx index 7b06a693..bade28cb 100644 --- a/src/views/group-details-panel/group-details-panel.tsx +++ b/src/views/group-details-panel/group-details-panel.tsx @@ -11,13 +11,15 @@ import { ResourceLinkHeadUuid, ResourceLinkTailUuid, ResourceLinkTailEmail, Reso import { createTree } from 'models/tree'; import { noop } from 'lodash/fp'; import { RootState } from 'store/store'; -import { GROUP_DETAILS_MEMBERS_PANEL_ID, GROUP_DETAILS_PERMISSIONS_PANEL_ID, openAddGroupMembersDialog } from 'store/group-details-panel/group-details-panel-actions'; +import { GROUP_DETAILS_MEMBERS_PANEL_ID, GROUP_DETAILS_PERMISSIONS_PANEL_ID, openAddGroupMembersDialog, getCurrentGroupDetailsPanelUuid } from 'store/group-details-panel/group-details-panel-actions'; import { openContextMenu } from 'store/context-menu/context-menu-actions'; import { ResourcesState, getResource } from 'store/resources/resources'; import { ContextMenuKind } from 'views-components/context-menu/context-menu'; import { PermissionResource } from 'models/permission'; import { Grid, Button, Tabs, Tab, Paper } from '@material-ui/core'; import { AddIcon } from 'components/icon/icon'; +import { getUserUuid } from 'common/getuser'; +import { GroupResource } from 'models/group'; export enum GroupDetailsPanelMembersColumnNames { FULL_NAME = "Name", @@ -120,8 +122,13 @@ export const groupDetailsPermissionsPanelColumns: DataColumns = [ ]; const mapStateToProps = (state: RootState) => { + const groupUuid = getCurrentGroupDetailsPanelUuid(state.properties); + const group = getResource(groupUuid || '')(state.resources); + const userUuid = getUserUuid(state); + return { - resources: state.resources + resources: state.resources, + groupCanManage: userUuid ? group?.writableBy?.includes(userUuid) : false, }; }; @@ -134,6 +141,7 @@ export interface GroupDetailsPanelProps { onContextMenu: (event: React.MouseEvent, item: any) => void; onAddUser: () => void; resources: ResourcesState; + groupCanManage: boolean; } export const GroupDetailsPanel = connect( @@ -166,14 +174,15 @@ export const GroupDetailsPanel = connect( hideColumnSelector hideSearchInput actions={ - - - + + } paperProps={{ elevation: 0, -- 2.30.2