From e7ec3fe61fe94eb78f84a379a923617f8f414901 Mon Sep 17 00:00:00 2001 From: Prakash Senthil Vel <23444145+prakashsvmx@users.noreply.github.com> Date: Fri, 11 Nov 2022 00:57:40 +0530 Subject: [PATCH] fix sub path resource matching in list objects (#2444) fixes #https://github.com/minio/console/issues/2400 Used the policy to validate the fix. ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::sam-card" ] }, { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::sam-card/*" ] }, { "Effect": "Deny", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::sam-card/aa/*" ] } ] } ``` --- .../Objects/ListObjects/ListObjects.tsx | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index ea6b9a8cc..0d00d7fbc 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -359,9 +359,26 @@ const ListObjects = () => { const internalPaths = pathSegment.length === 2 ? pathSegment[1] : ""; const bucketName = params.bucketName || ""; + const pageTitle = decodeURLString(internalPaths); + const currentPath = pageTitle.split("/").filter((i: string) => i !== ""); + + let uploadPath = [bucketName]; + if (currentPath.length > 0) { + uploadPath = uploadPath.concat(currentPath); + } + const fileUpload = useRef(null); const folderUpload = useRef(null); + const canDownload = hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT]); + const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]); + const canUpload = hasPermission( + uploadPath, + [IAM_SCOPES.S3_PUT_OBJECT], + true, + true + ); + useEffect(() => { if (folderUpload.current !== null) { folderUpload.current.setAttribute("directory", ""); @@ -1179,9 +1196,6 @@ const ListObjects = () => { dispatch(setLoadingObjectsList(true)); }; - const pageTitle = decodeURLString(internalPaths); - const currentPath = pageTitle.split("/").filter((i: string) => i !== ""); - const plSelect = filteredRecords; const sortASC = plSelect.sort(sortListObjects(currentSortField)); @@ -1231,14 +1245,6 @@ const ListObjects = () => { }); } }; - let uploadPath = [bucketName]; - if (currentPath.length > 0) { - uploadPath = uploadPath.concat(currentPath); - } - - const canDownload = hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT]); - const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]); - const canUpload = hasPermission(uploadPath, [IAM_SCOPES.S3_PUT_OBJECT]); const onClosePanel = (forceRefresh: boolean) => { dispatch(setSelectedObjectView(null));