From 1df1bf34e0885ab85e7d6ad29bf8b055b8319e21 Mon Sep 17 00:00:00 2001 From: Allan Roger Reid Date: Tue, 18 Feb 2025 16:41:10 -0800 Subject: [PATCH 1/6] Upgrade dompurify to 3.2.4 Allow console to recognize Delete* --- Makefile | 2 +- .../__tests__/accessControl.test.ts | 4 ++-- .../src/common/SecureComponent/permissions.ts | 2 ++ .../Objects/ListObjects/ListObjects.tsx | 4 ++-- .../Objects/ListObjects/ObjectDetailPanel.tsx | 9 ++++++--- .../Objects/ObjectDetails/TagsModal.tsx | 5 ++++- web-app/yarn.lock | 17 +++++++++++------ 7 files changed, 28 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 946e786f90..f41ec2cdca 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ swagger-console: assets: @(if [ -f "${NVM_DIR}/nvm.sh" ]; then \. "${NVM_DIR}/nvm.sh" && nvm install && nvm use && npm install -g yarn ; fi &&\ - cd web-app; corepack enable; yarn install --prefer-offline; make build-static; yarn prettier --write . --loglevel warn; cd ..) + cd web-app; corepack enable; yarn install --prefer-offline; make build-static; yarn prettier --write . --log-level warn; cd ..) test-integration: @(docker stop pgsqlcontainer || true) diff --git a/web-app/src/common/SecureComponent/__tests__/accessControl.test.ts b/web-app/src/common/SecureComponent/__tests__/accessControl.test.ts index f616d56ccd..5cd0ceacf9 100644 --- a/web-app/src/common/SecureComponent/__tests__/accessControl.test.ts +++ b/web-app/src/common/SecureComponent/__tests__/accessControl.test.ts @@ -176,7 +176,7 @@ test("Can delete an object inside a bucket prefix", () => { "xref_cust_guid_actd-v1.jpg", "test/digitalinsights/xref_cust_guid_actd-v1.jpg", ], - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], ), ).toBe(true); }); @@ -186,7 +186,7 @@ test("Can't delete an object inside a bucket prefix", () => { expect( hasPermission( ["xref_cust_guid_actd-v1.jpg", "test/xref_cust_guid_actd-v1.jpg"], - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], ), ).toBe(false); }); diff --git a/web-app/src/common/SecureComponent/permissions.ts b/web-app/src/common/SecureComponent/permissions.ts index 481b93f9d6..71d2afc1fa 100644 --- a/web-app/src/common/SecureComponent/permissions.ts +++ b/web-app/src/common/SecureComponent/permissions.ts @@ -30,6 +30,7 @@ export const IAM_SCOPES = { S3_PUT_OBJECT: "s3:PutObject", S3_GET_ACTIONS: "s3:Get*", S3_PUT_ACTIONS: "s3:Put*", + S3_DELETE_ACTIONS: "s3:Delete*", S3_GET_OBJECT_LEGAL_HOLD: "s3:GetObjectLegalHold", S3_PUT_OBJECT_LEGAL_HOLD: "s3:PutObjectLegalHold", S3_DELETE_OBJECT: "s3:DeleteObject", @@ -197,6 +198,7 @@ export const IAM_PERMISSIONS = { IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS, IAM_SCOPES.S3_DELETE_OBJECT, + IAM_SCOPES.S3_DELETE_ACTIONS, ], [IAM_ROLES.BUCKET_VIEWER]: [ IAM_SCOPES.S3_LIST_BUCKET, diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index 98d929ad7b..f55990a589 100644 --- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -278,7 +278,7 @@ const ListObjects = () => { ]); const canDelete = hasPermission( [pathAsResourceInPolicy, ...sessionGrantWildCards], - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], ); const canUpload = hasPermission( @@ -912,7 +912,7 @@ const ListObjects = () => { tooltip: canDelete ? "Delete Selected Files" : permissionTooltipHelper( - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], "delete objects in this bucket", ), }, diff --git a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx index 52a222be00..335edb2400 100644 --- a/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx +++ b/web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx @@ -352,7 +352,7 @@ const ObjectDetailPanel = ({ ]); const canDelete = hasPermission( [bucketName, currentItem, [bucketName, actualInfo.name].join("/")], - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], ); let objectType: AllowedPreviews = previewObjectType(metaData, currentItem); @@ -649,7 +649,7 @@ const ObjectDetailPanel = ({ canDelete ? "" : permissionTooltipHelper( - [IAM_SCOPES.S3_DELETE_OBJECT], + [IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS], "delete this object", ) } @@ -665,7 +665,10 @@ const ObjectDetailPanel = ({ currentItem, [bucketName, actualInfo.name].join("/"), ]} - scopes={[IAM_SCOPES.S3_DELETE_OBJECT]} + scopes={[ + IAM_SCOPES.S3_DELETE_OBJECT, + IAM_SCOPES.S3_DELETE_ACTIONS, + ]} errorProps={{ disabled: true }} >