Skip to content

Commit f6d92d5

Browse files
authored
disable legalhold if no locking (#1758)
1 parent bc1cb82 commit f6d92d5

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import {
7474
setErrorSnackMessage,
7575
setSnackBarMessage,
7676
} from "../../../../../../actions";
77-
import { BucketInfo, BucketQuota, BucketVersioning } from "../../../types";
77+
import {BucketInfo, BucketObjectLocking, BucketQuota, BucketVersioning} from "../../../types";
7878
import { ErrorResponseHandler } from "../../../../../../common/types";
7979

8080
import ScreenTitle from "../../../../Common/ScreenTitle/ScreenTitle";
@@ -290,6 +290,8 @@ const ListObjects = ({
290290
useState<React.ReactNode>(defLoading);
291291
const [loadingVersioning, setLoadingVersioning] = useState<boolean>(true);
292292
const [isVersioned, setIsVersioned] = useState<boolean>(false);
293+
const [loadingLocking, setLoadingLocking] = useState<boolean>(true);
294+
const [lockingEnabled, setLockingEnabled] = useState<boolean>(false);
293295
const [rewindSelect, setRewindSelect] = useState<boolean>(false);
294296
const [selectedObjects, setSelectedObjects] = useState<string[]>([]);
295297
const [previewOpen, setPreviewOpen] = useState<boolean>(false);
@@ -436,6 +438,25 @@ const ListObjects = ({
436438
}
437439
}, [bucketName, loadingVersioning, setErrorSnackMessage, displayListObjects]);
438440

441+
useEffect(() => {
442+
if (loadingLocking) {
443+
if (displayListObjects) {
444+
api
445+
.invoke("GET", `/api/v1/buckets/${bucketName}/object-locking`)
446+
.then((res: BucketObjectLocking) => {
447+
setLockingEnabled(res.object_locking_enabled);
448+
setLoadingLocking(false);
449+
})
450+
.catch((err: ErrorResponseHandler) => {
451+
setErrorSnackMessage(err);
452+
setLoadingLocking(false);
453+
});
454+
} else {
455+
setLoadingLocking(false);
456+
}
457+
}
458+
}, [bucketName, loadingLocking, setErrorSnackMessage, displayListObjects]);
459+
439460
// Rewind
440461
useEffect(() => {
441462
if (rewindEnabled) {
@@ -1392,6 +1413,7 @@ const ListObjects = ({
13921413
bucketName={bucketName}
13931414
onClosePanel={onClosePanel}
13941415
versioning={isVersioned}
1416+
locking={lockingEnabled}
13951417
/>
13961418
)}
13971419
</DetailsListPanel>

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ interface IObjectDetailPanelProps {
123123
bucketToRewind: string;
124124
distributedSetup: boolean;
125125
versioning: boolean;
126+
locking: boolean;
126127
versionsMode: boolean;
127128
selectedVersion: string;
128129
loadingObjectInfo: boolean;
@@ -156,6 +157,7 @@ const ObjectDetailPanel = ({
156157
bucketName,
157158
distributedSetup,
158159
versioning,
160+
locking,
159161
setErrorSnackMessage,
160162
setNewObject,
161163
updateProgress,
@@ -405,11 +407,8 @@ const ObjectDetailPanel = ({
405407
},
406408
label: "Legal Hold",
407409
disabled:
408-
!distributedSetup ||
409-
!!actualInfo.is_delete_marker ||
410-
!hasPermission(objectResources, [
411-
IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,
412-
]) ||
410+
!locking || !distributedSetup || !!actualInfo.is_delete_marker ||
411+
!hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD]) ||
413412
selectedVersion !== "",
414413
icon: <LegalHoldIcon />,
415414
tooltip: "Change Legal Hold rules for this File",

0 commit comments

Comments
 (0)