Skip to content

Commit 7335dcb

Browse files
van-goedmondsgarrettchandra-tacc
authored
Bug/wp 47 fix shared workspace manage team modal (#922)
* WP-47: if user is Guest, disable rename & trash * css to Update button * npm run prettier * update to unit test * ran prettier * check for 'USER' to prevent file move * 'GUEST' cannot move files --------- Co-authored-by: edmondsgarrett <43251554+edmondsgarrett@users.noreply.github.com> Co-authored-by: Chandra Y <cyemparala@tacc.utexas.edu>
1 parent 7fd106f commit 7335dcb

File tree

5 files changed

+37
-5
lines changed

5 files changed

+37
-5
lines changed

Core-Portal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 272c63258beb289659dd2d5f6454f9f414923bc2

client/src/components/DataFiles/DataFilesProjectMembers/DataFilesProjectMembers.module.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@
6969
composes: c-button--secondary from '../../../styles/components/c-button.css';
7070
}
7171

72+
.ownership-button {
73+
margin-left: 5px;
74+
}
75+
7276
div > .project-role-selector {
7377
height: auto; /* overwrite .form-control height to accommodate dropdown selector next to small button in this instance */
7478
}

client/src/components/DataFiles/DataFilesProjectMembers/_cells/SystemRoleSelector.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useSelector } from 'react-redux';
44
import Cookies from 'js-cookie';
55
import fetch from 'cross-fetch';
66
import DropdownSelector from '_common/DropdownSelector';
7-
import { Button } from 'reactstrap';
7+
import { Button } from '_common';
88
import styles from '../DataFilesProjectMembers.module.scss';
99
import LoadingSpinner from '_common/LoadingSpinner';
1010

@@ -109,7 +109,8 @@ const SystemRoleSelector = ({ projectId, username }) => {
109109
</DropdownSelector>
110110
{data.role !== selectedRole && !isFetching && (
111111
<Button
112-
style={{ marginLeft: '5px' }}
112+
type="secondary"
113+
size="small"
113114
className={styles['ownership-button']}
114115
onClick={() => setSystemRole(selectedRole)}
115116
>

client/src/components/DataFiles/DataFilesToolbar/DataFilesToolbar.jsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import PropTypes from 'prop-types';
55
import { Button } from '_common';
66
import getFilePermissions from 'utils/filePermissions';
77
import { useModal, useSelectedFiles, useFileListing } from 'hooks/datafiles';
8+
import { useSystemRole } from '../DataFilesProjectMembers/_cells/SystemRoleSelector';
89
import './DataFilesToolbar.scss';
910

1011
export const ToolbarButton = ({ text, iconName, onClick, disabled }) => {
@@ -55,6 +56,19 @@ const DataFilesToolbar = ({ scheme, api }) => {
5556
(sys) => sys.system === params.system && sys.scheme === params.scheme
5657
);
5758

59+
const { projectId } = useSelector((state) => state.projects.metadata);
60+
61+
const authenticatedUser = useSelector(
62+
(state) => state.authenticatedUser.user.username
63+
);
64+
65+
const { query: authenticatedUserQuery } = useSystemRole(
66+
projectId,
67+
authenticatedUser
68+
);
69+
70+
const isGuest = authenticatedUserQuery?.data?.role === 'GUEST';
71+
5872
const inTrash = useSelector((state) => {
5973
// remove leading slash from homeDir value
6074
const homeDir = selectedSystem?.homeDir?.slice(1);
@@ -177,10 +191,10 @@ const DataFilesToolbar = ({ scheme, api }) => {
177191
'areMultipleFilesOrFolderSelected',
178192
permissionParams
179193
);
180-
const canRename = getFilePermissions('rename', permissionParams);
181-
const canMove = getFilePermissions('move', permissionParams);
194+
const canRename = getFilePermissions('rename', permissionParams) && !isGuest;
195+
const canMove = getFilePermissions('move', permissionParams) && !isGuest;
182196
const canCopy = getFilePermissions('copy', permissionParams);
183-
const canTrash = getFilePermissions('trash', permissionParams);
197+
const canTrash = getFilePermissions('trash', permissionParams) && !isGuest;
184198
const canCompress = getFilePermissions('compress', permissionParams);
185199
const canExtract = getFilePermissions('extract', permissionParams);
186200
const canMakePublic =

client/src/components/DataFiles/DataFilesToolbar/DataFilesToolbar.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ describe('DataFilesToolbar', () => {
5050
},
5151
listing: { selected: { FilesListing: [] } },
5252
systems: systemsFixture,
53+
projects: { metadata: [] },
54+
authenticatedUser: { user: { username: 'testuser' } },
5355
}),
5456
createMemoryHistory()
5557
);
@@ -82,6 +84,8 @@ describe('DataFilesToolbar', () => {
8284
},
8385
listing: { selected: { FilesListing: [] } },
8486
systems: systemsFixture,
87+
projects: { metadata: [] },
88+
authenticatedUser: { user: { username: 'testuser' } },
8589
}),
8690
createMemoryHistory()
8791
);
@@ -114,6 +118,8 @@ describe('DataFilesToolbar', () => {
114118
},
115119
listing: { selected: { FilesListing: [] } },
116120
systems: systemsFixture,
121+
projects: { metadata: [] },
122+
authenticatedUser: { user: { username: 'testuser' } },
117123
}),
118124
createMemoryHistory()
119125
);
@@ -146,6 +152,8 @@ describe('DataFilesToolbar', () => {
146152
},
147153
listing: { selected: { FilesListing: [] } },
148154
systems: systemsFixture,
155+
projects: { metadata: [] },
156+
authenticatedUser: { user: { username: 'testuser' } },
149157
}),
150158
createMemoryHistory()
151159
);
@@ -187,6 +195,8 @@ describe('DataFilesToolbar', () => {
187195
operationStatus: { trash: false },
188196
},
189197
systems: systemsFixture,
198+
projects: { metadata: [] },
199+
authenticatedUser: { user: { username: 'testuser' } },
190200
}),
191201
createMemoryHistory()
192202
);
@@ -218,6 +228,8 @@ describe('DataFilesToolbar', () => {
218228
},
219229
//listing: { } },
220230
systems: systemsFixture,
231+
projects: { metadata: [] },
232+
authenticatedUser: { user: { username: 'testuser' } },
221233
}),
222234
createMemoryHistory()
223235
);

0 commit comments

Comments
 (0)