Skip to content

Commit 9e0416f

Browse files
authored
Allow console to recognize s3.Delete* (#3507)
1 parent f4a08fc commit 9e0416f

File tree

8 files changed

+44
-21
lines changed

8 files changed

+44
-21
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ swagger-console:
6464

6565
assets:
6666
@(if [ -f "${NVM_DIR}/nvm.sh" ]; then \. "${NVM_DIR}/nvm.sh" && nvm install && nvm use && npm install -g yarn ; fi &&\
67-
cd web-app; corepack enable; yarn install --prefer-offline; make build-static; yarn prettier --write . --loglevel warn; cd ..)
67+
cd web-app; corepack enable; yarn install --prefer-offline; make build-static; yarn prettier --write . --log-level warn; cd ..)
6868

6969
test-integration:
7070
@(docker stop pgsqlcontainer || true)

web-app/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@
9696
"semver": "^7.5.2",
9797
"ws": "^8.17.1",
9898
"rollup": "^4.24.0",
99-
"cookie": "^0.7.2"
99+
"cookie": "^0.7.2",
100+
"jspdf": "^3.0.0"
100101
},
101102
"main": "index.js",
102103
"packageManager": "yarn@4.4.0"

web-app/src/common/SecureComponent/__tests__/accessControl.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ test("Can delete an object inside a bucket prefix", () => {
176176
"xref_cust_guid_actd-v1.jpg",
177177
"test/digitalinsights/xref_cust_guid_actd-v1.jpg",
178178
],
179-
[IAM_SCOPES.S3_DELETE_OBJECT],
179+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
180180
),
181181
).toBe(true);
182182
});
@@ -186,7 +186,7 @@ test("Can't delete an object inside a bucket prefix", () => {
186186
expect(
187187
hasPermission(
188188
["xref_cust_guid_actd-v1.jpg", "test/xref_cust_guid_actd-v1.jpg"],
189-
[IAM_SCOPES.S3_DELETE_OBJECT],
189+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
190190
),
191191
).toBe(false);
192192
});

web-app/src/common/SecureComponent/permissions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const IAM_SCOPES = {
3030
S3_PUT_OBJECT: "s3:PutObject",
3131
S3_GET_ACTIONS: "s3:Get*",
3232
S3_PUT_ACTIONS: "s3:Put*",
33+
S3_DELETE_ACTIONS: "s3:Delete*",
3334
S3_GET_OBJECT_LEGAL_HOLD: "s3:GetObjectLegalHold",
3435
S3_PUT_OBJECT_LEGAL_HOLD: "s3:PutObjectLegalHold",
3536
S3_DELETE_OBJECT: "s3:DeleteObject",
@@ -197,6 +198,7 @@ export const IAM_PERMISSIONS = {
197198
IAM_SCOPES.S3_PUT_OBJECT,
198199
IAM_SCOPES.S3_PUT_ACTIONS,
199200
IAM_SCOPES.S3_DELETE_OBJECT,
201+
IAM_SCOPES.S3_DELETE_ACTIONS,
200202
],
201203
[IAM_ROLES.BUCKET_VIEWER]: [
202204
IAM_SCOPES.S3_LIST_BUCKET,

web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ const ListObjects = () => {
278278
]);
279279
const canDelete = hasPermission(
280280
[pathAsResourceInPolicy, ...sessionGrantWildCards],
281-
[IAM_SCOPES.S3_DELETE_OBJECT],
281+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
282282
);
283283
const canUpload =
284284
hasPermission(
@@ -912,7 +912,7 @@ const ListObjects = () => {
912912
tooltip: canDelete
913913
? "Delete Selected Files"
914914
: permissionTooltipHelper(
915-
[IAM_SCOPES.S3_DELETE_OBJECT],
915+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
916916
"delete objects in this bucket",
917917
),
918918
},

web-app/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ const ObjectDetailPanel = ({
352352
]);
353353
const canDelete = hasPermission(
354354
[bucketName, currentItem, [bucketName, actualInfo.name].join("/")],
355-
[IAM_SCOPES.S3_DELETE_OBJECT],
355+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
356356
);
357357

358358
let objectType: AllowedPreviews = previewObjectType(metaData, currentItem);
@@ -649,7 +649,7 @@ const ObjectDetailPanel = ({
649649
canDelete
650650
? ""
651651
: permissionTooltipHelper(
652-
[IAM_SCOPES.S3_DELETE_OBJECT],
652+
[IAM_SCOPES.S3_DELETE_OBJECT, IAM_SCOPES.S3_DELETE_ACTIONS],
653653
"delete this object",
654654
)
655655
}
@@ -665,7 +665,10 @@ const ObjectDetailPanel = ({
665665
currentItem,
666666
[bucketName, actualInfo.name].join("/"),
667667
]}
668-
scopes={[IAM_SCOPES.S3_DELETE_OBJECT]}
668+
scopes={[
669+
IAM_SCOPES.S3_DELETE_OBJECT,
670+
IAM_SCOPES.S3_DELETE_ACTIONS,
671+
]}
669672
errorProps={{ disabled: true }}
670673
>
671674
<Button

web-app/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,10 @@ const AddTagModal = ({
232232
return (
233233
<SecureComponent
234234
key={`chip-${index}`}
235-
scopes={[IAM_SCOPES.S3_DELETE_OBJECT_TAGGING]}
235+
scopes={[
236+
IAM_SCOPES.S3_DELETE_OBJECT_TAGGING,
237+
IAM_SCOPES.S3_DELETE_ACTIONS,
238+
]}
236239
resource={bucketName}
237240
errorProps={{
238241
deleteIcon: null,

web-app/yarn.lock

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,6 +1655,15 @@ __metadata:
16551655
languageName: node
16561656
linkType: hard
16571657

1658+
"@babel/runtime@npm:^7.26.0":
1659+
version: 7.26.9
1660+
resolution: "@babel/runtime@npm:7.26.9"
1661+
dependencies:
1662+
regenerator-runtime: "npm:^0.14.0"
1663+
checksum: 10c0/e8517131110a6ec3a7360881438b85060e49824e007f4a64b5dfa9192cf2bb5c01e84bfc109f02d822c7edb0db926928dd6b991e3ee460b483fb0fac43152d9b
1664+
languageName: node
1665+
linkType: hard
1666+
16581667
"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3":
16591668
version: 7.25.9
16601669
resolution: "@babel/template@npm:7.25.9"
@@ -3839,7 +3848,7 @@ __metadata:
38393848
languageName: node
38403849
linkType: hard
38413850

3842-
"@types/trusted-types@npm:^2.0.2":
3851+
"@types/trusted-types@npm:^2.0.2, @types/trusted-types@npm:^2.0.7":
38433852
version: 2.0.7
38443853
resolution: "@types/trusted-types@npm:2.0.7"
38453854
checksum: 10c0/4c4855f10de7c6c135e0d32ce462419d8abbbc33713b31d294596c0cc34ae1fa6112a2f9da729c8f7a20707782b0d69da3b1f8df6645b0366d08825ca1522e0c
@@ -7142,10 +7151,15 @@ __metadata:
71427151
languageName: node
71437152
linkType: hard
71447153

7145-
"dompurify@npm:^2.5.4":
7146-
version: 2.5.7
7147-
resolution: "dompurify@npm:2.5.7"
7148-
checksum: 10c0/23c4f737182fcf3e731e458c3930ef4d2916191e4180e1e345f153124dfa7ec117d2810af1754e8854c581131fc75dac914a8391183d1511852ef32b4055f711
7154+
"dompurify@npm:^3.2.4":
7155+
version: 3.2.4
7156+
resolution: "dompurify@npm:3.2.4"
7157+
dependencies:
7158+
"@types/trusted-types": "npm:^2.0.7"
7159+
dependenciesMeta:
7160+
"@types/trusted-types":
7161+
optional: true
7162+
checksum: 10c0/6be56810fb7ad2776155c8fc2967af5056783c030094362c7d0cf1ad13f2129cf922d8eefab528a34bdebfb98e2f44b306a983ab93aefb9d6f24c18a3d027a05
71497163
languageName: node
71507164
linkType: hard
71517165

@@ -11204,16 +11218,16 @@ __metadata:
1120411218
languageName: node
1120511219
linkType: hard
1120611220

11207-
"jspdf@npm:^2.3.1":
11208-
version: 2.5.2
11209-
resolution: "jspdf@npm:2.5.2"
11221+
"jspdf@npm:^3.0.0":
11222+
version: 3.0.0
11223+
resolution: "jspdf@npm:3.0.0"
1121011224
dependencies:
11211-
"@babel/runtime": "npm:^7.23.2"
11225+
"@babel/runtime": "npm:^7.26.0"
1121211226
atob: "npm:^2.1.2"
1121311227
btoa: "npm:^1.2.1"
1121411228
canvg: "npm:^3.0.6"
1121511229
core-js: "npm:^3.6.0"
11216-
dompurify: "npm:^2.5.4"
11230+
dompurify: "npm:^3.2.4"
1121711231
fflate: "npm:^0.8.1"
1121811232
html2canvas: "npm:^1.0.0-rc.5"
1121911233
dependenciesMeta:
@@ -11225,7 +11239,7 @@ __metadata:
1122511239
optional: true
1122611240
html2canvas:
1122711241
optional: true
11228-
checksum: 10c0/0e715ba51fab41d7de85f76585a6a2b7d224f43e510993f17f071b608cf32f2107a66f3a04cbfb4d2e60b73dbd2a90f3092bcc70b9d30601cbc060caadc4d90a
11242+
checksum: 10c0/cf1422322ac72d3b38096143475cfe00549fdfc924dd4199ca6a3472138bcb9467176954b89bcc99287b42ff0278b6e67b7362709a8c1415354c4e33520c9fd6
1122911243
languageName: node
1123011244
linkType: hard
1123111245

0 commit comments

Comments
 (0)