Skip to content

Commit 7c75c87

Browse files
authored
Fixed ListBuckets screen tooltip logic, HelpBox fix (#2404)
1 parent 404efd2 commit 7c75c87

File tree

6 files changed

+60
-56
lines changed

6 files changed

+60
-56
lines changed

portal-ui/src/common/SecureComponent/permissions.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export const IAM_SCOPES = {
2727
S3_GET_BUCKET_POLICY: "s3:GetBucketPolicy",
2828
S3_PUT_BUCKET_POLICY: "s3:PutBucketPolicy",
2929
S3_GET_OBJECT: "s3:GetObject",
30-
S3_STAR_OBJECT: "s3:*Object",
3130
S3_PUT_OBJECT: "s3:PutObject",
3231
S3_GET_OBJECT_LEGAL_HOLD: "s3:GetObjectLegalHold",
3332
S3_PUT_OBJECT_LEGAL_HOLD: "s3:PutObjectLegalHold",
@@ -282,7 +281,6 @@ export const IAM_PERMISSIONS = {
282281
IAM_SCOPES.ADMIN_LIST_USER_POLICIES,
283282
IAM_SCOPES.ADMIN_LIST_USERS,
284283
IAM_SCOPES.ADMIN_HEAL,
285-
IAM_SCOPES.S3_STAR_BUCKET,
286284
],
287285
[IAM_ROLES.BUCKET_LIFECYCLE]: [
288286
IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,
@@ -547,10 +545,6 @@ export const listGroupPermissions = [
547545
export const deleteBucketPermissions = [
548546
IAM_SCOPES.S3_DELETE_BUCKET,
549547
IAM_SCOPES.S3_FORCE_DELETE_BUCKET,
550-
IAM_SCOPES.S3_STAR_BUCKET,
551548
];
552549

553-
export const browseBucketPermissions = [
554-
IAM_SCOPES.S3_LIST_BUCKET,
555-
IAM_SCOPES.S3_STAR_BUCKET,
556-
];
550+
export const browseBucketPermissions = [IAM_SCOPES.S3_LIST_BUCKET];

portal-ui/src/screens/Console/Buckets/BucketDetails/BrowserHandler.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ const BrowserHandler = () => {
110110
IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,
111111
IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,
112112
IAM_SCOPES.S3_DELETE_BUCKET_POLICY,
113-
IAM_SCOPES.S3_STAR_BUCKET,
114113
]);
115114

116115
const searchBar = (

portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx

Lines changed: 55 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
141141
}
142142
});
143143

144+
const hasBuckets = records.length > 0;
145+
144146
const selectListBuckets = (e: React.ChangeEvent<HTMLInputElement>) => {
145147
const targetD = e.target;
146148
const value = targetD.value;
@@ -215,10 +217,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
215217
setSelectedBuckets(selectAllBuckets);
216218
};
217219

218-
const canCreateBucket = hasPermission("*", [
219-
IAM_SCOPES.S3_CREATE_BUCKET,
220-
IAM_SCOPES.S3_STAR_BUCKET,
221-
]);
220+
const canCreateBucket = hasPermission("*", [IAM_SCOPES.S3_CREATE_BUCKET]);
222221
const canListBuckets = hasPermission("*", [IAM_SCOPES.S3_LIST_BUCKET]);
223222

224223
return (
@@ -245,12 +244,14 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
245244
<AutoColorIcon marginRight={15} marginTop={10} />
246245
</Grid>
247246
)}
248-
<SearchBox
249-
onChange={setFilterBuckets}
250-
placeholder="Search Buckets"
251-
overrideClass={classes.searchField}
252-
value={filterBuckets}
253-
/>
247+
{hasBuckets && (
248+
<SearchBox
249+
onChange={setFilterBuckets}
250+
placeholder="Search Buckets"
251+
overrideClass={classes.searchField}
252+
value={filterBuckets}
253+
/>
254+
)}
254255

255256
<Grid
256257
item
@@ -268,7 +269,11 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
268269
<Fragment>
269270
<TooltipWrapper
270271
tooltip={
271-
bulkSelect ? "Unselect Buckets" : "Select Multiple Buckets"
272+
!hasBuckets
273+
? ""
274+
: bulkSelect
275+
? "Unselect Buckets"
276+
: "Select Multiple Buckets"
272277
}
273278
>
274279
<Button
@@ -279,13 +284,16 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
279284
}}
280285
icon={<SelectMultipleIcon />}
281286
variant={bulkSelect ? "callAction" : "regular"}
287+
disabled={!hasBuckets}
282288
/>
283289
</TooltipWrapper>
284290

285291
{bulkSelect && (
286292
<TooltipWrapper
287293
tooltip={
288-
selectedBuckets.length === filteredRecords.length
294+
!hasBuckets
295+
? ""
296+
: selectedBuckets.length === filteredRecords.length
289297
? "Unselect All Buckets"
290298
: "Select All Buckets"
291299
}
@@ -301,16 +309,18 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
301309

302310
<TooltipWrapper
303311
tooltip={
304-
selectedBuckets.length === 0
305-
? bulkSelect
306-
? "Please select at least one bucket on which to configure Lifecycle"
307-
: "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
308-
: canPutLifecycle
309-
? "Set Lifecycle"
310-
: permissionTooltipHelper(
312+
!hasBuckets
313+
? ""
314+
: !canPutLifecycle
315+
? permissionTooltipHelper(
311316
IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE],
312317
"configure lifecycle for the selected buckets"
313318
)
319+
: selectedBuckets.length === 0
320+
? bulkSelect
321+
? "Please select at least one bucket on which to configure Lifecycle"
322+
: "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
323+
: "Set Lifecycle"
314324
}
315325
>
316326
<Button
@@ -324,7 +334,17 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
324334
/>
325335
</TooltipWrapper>
326336

327-
<TooltipWrapper tooltip={"Set Replication"}>
337+
<TooltipWrapper
338+
tooltip={
339+
!hasBuckets
340+
? ""
341+
: selectedBuckets.length === 0
342+
? bulkSelect
343+
? "Please select at least one bucket on which to configure Replication"
344+
: "Use the Select Multiple Buckets button to choose buckets on which to configure Replication"
345+
: "Set Replication"
346+
}
347+
>
328348
<Button
329349
id={"set-replication"}
330350
onClick={() => {
@@ -408,7 +428,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
408428
</Grid>
409429
</Grid>
410430
)}
411-
{filteredRecords.length === 0 && filterBuckets === "" && (
431+
{!hasBuckets && (
412432
<Grid
413433
container
414434
justifyContent={"center"}
@@ -424,21 +444,23 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
424444
MinIO uses buckets to organize objects. A bucket is
425445
similar to a folder or directory in a filesystem, where
426446
each bucket can hold an arbitrary number of objects.
427-
<br></br>
428-
<br></br>
429-
{canListBuckets
430-
? ""
431-
: "In order to view the buckets on this server, you require " +
432-
IAM_SCOPES.S3_LIST_BUCKET +
433-
" permission. Please contact your MinIO administrator to establish this permission."}
447+
<br />
448+
{canListBuckets ? (
449+
""
450+
) : (
451+
<Fragment>
452+
<br />
453+
{permissionTooltipHelper(
454+
[IAM_SCOPES.S3_LIST_BUCKET],
455+
"view the buckets on this server"
456+
)}
457+
<br />
458+
</Fragment>
459+
)}
434460
<SecureComponent
435-
scopes={[
436-
IAM_SCOPES.S3_CREATE_BUCKET,
437-
IAM_SCOPES.S3_STAR_BUCKET,
438-
]}
461+
scopes={[IAM_SCOPES.S3_CREATE_BUCKET]}
439462
resource={CONSOLE_UI_RESOURCE}
440463
>
441-
<br />
442464
<br />
443465
To get started,&nbsp;
444466
<AButton

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,18 +1236,9 @@ const ListObjects = () => {
12361236
uploadPath = uploadPath.concat(currentPath);
12371237
}
12381238

1239-
const canDownload = hasPermission(bucketName, [
1240-
IAM_SCOPES.S3_GET_OBJECT,
1241-
IAM_SCOPES.S3_STAR_OBJECT,
1242-
]);
1243-
const canDelete = hasPermission(bucketName, [
1244-
IAM_SCOPES.S3_DELETE_OBJECT,
1245-
IAM_SCOPES.S3_STAR_OBJECT,
1246-
]);
1247-
const canUpload = hasPermission(uploadPath, [
1248-
IAM_SCOPES.S3_PUT_OBJECT,
1249-
IAM_SCOPES.S3_STAR_OBJECT,
1250-
]);
1239+
const canDownload = hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT]);
1240+
const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]);
1241+
const canUpload = hasPermission(uploadPath, [IAM_SCOPES.S3_PUT_OBJECT]);
12511242

12521243
const onClosePanel = (forceRefresh: boolean) => {
12531244
dispatch(setSelectedObjectView(null));

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,6 @@ const ObjectDetailPanel = ({
430430
]);
431431
const canGetObject = hasPermission(objectResources, [
432432
IAM_SCOPES.S3_GET_OBJECT,
433-
IAM_SCOPES.S3_STAR_OBJECT,
434433
]);
435434
const canDelete = hasPermission(
436435
[bucketName, currentItem, [bucketName, actualInfo.name].join("/")],

portal-ui/src/screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,10 @@ const UploadFilesButton = ({
6969

7070
const uploadObjectAllowed = hasPermission(uploadPath, [
7171
IAM_SCOPES.S3_PUT_OBJECT,
72-
IAM_SCOPES.S3_STAR_OBJECT,
7372
]);
7473
const uploadFolderAllowed = hasPermission(
7574
bucketName,
76-
[IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_STAR_OBJECT],
75+
[IAM_SCOPES.S3_PUT_OBJECT],
7776
false,
7877
true
7978
);

0 commit comments

Comments
 (0)