disable legalhold if no locking (#1758)

This commit is contained in:
adfost
2022-03-24 10:14:19 -07:00
committed by GitHub
parent bc1cb820d1
commit f6d92d50e4
2 changed files with 27 additions and 6 deletions

View File

@@ -74,7 +74,7 @@ import {
setErrorSnackMessage,
setSnackBarMessage,
} from "../../../../../../actions";
import { BucketInfo, BucketQuota, BucketVersioning } from "../../../types";
import {BucketInfo, BucketObjectLocking, BucketQuota, BucketVersioning} from "../../../types";
import { ErrorResponseHandler } from "../../../../../../common/types";
import ScreenTitle from "../../../../Common/ScreenTitle/ScreenTitle";
@@ -290,6 +290,8 @@ const ListObjects = ({
useState<React.ReactNode>(defLoading);
const [loadingVersioning, setLoadingVersioning] = useState<boolean>(true);
const [isVersioned, setIsVersioned] = useState<boolean>(false);
const [loadingLocking, setLoadingLocking] = useState<boolean>(true);
const [lockingEnabled, setLockingEnabled] = useState<boolean>(false);
const [rewindSelect, setRewindSelect] = useState<boolean>(false);
const [selectedObjects, setSelectedObjects] = useState<string[]>([]);
const [previewOpen, setPreviewOpen] = useState<boolean>(false);
@@ -436,6 +438,25 @@ const ListObjects = ({
}
}, [bucketName, loadingVersioning, setErrorSnackMessage, displayListObjects]);
useEffect(() => {
if (loadingLocking) {
if (displayListObjects) {
api
.invoke("GET", `/api/v1/buckets/${bucketName}/object-locking`)
.then((res: BucketObjectLocking) => {
setLockingEnabled(res.object_locking_enabled);
setLoadingLocking(false);
})
.catch((err: ErrorResponseHandler) => {
setErrorSnackMessage(err);
setLoadingLocking(false);
});
} else {
setLoadingLocking(false);
}
}
}, [bucketName, loadingLocking, setErrorSnackMessage, displayListObjects]);
// Rewind
useEffect(() => {
if (rewindEnabled) {
@@ -1392,6 +1413,7 @@ const ListObjects = ({
bucketName={bucketName}
onClosePanel={onClosePanel}
versioning={isVersioned}
locking={lockingEnabled}
/>
)}
</DetailsListPanel>

View File

@@ -123,6 +123,7 @@ interface IObjectDetailPanelProps {
bucketToRewind: string;
distributedSetup: boolean;
versioning: boolean;
locking: boolean;
versionsMode: boolean;
selectedVersion: string;
loadingObjectInfo: boolean;
@@ -156,6 +157,7 @@ const ObjectDetailPanel = ({
bucketName,
distributedSetup,
versioning,
locking,
setErrorSnackMessage,
setNewObject,
updateProgress,
@@ -405,11 +407,8 @@ const ObjectDetailPanel = ({
},
label: "Legal Hold",
disabled:
!distributedSetup ||
!!actualInfo.is_delete_marker ||
!hasPermission(objectResources, [
IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,
]) ||
!locking || !distributedSetup || !!actualInfo.is_delete_marker ||
!hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD]) ||
selectedVersion !== "",
icon: <LegalHoldIcon />,
tooltip: "Change Legal Hold rules for this File",