aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/s3api/s3api_object_handlers_put.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/weed/s3api/s3api_object_handlers_put.go b/weed/s3api/s3api_object_handlers_put.go
index 79214d5ed..50067f85e 100644
--- a/weed/s3api/s3api_object_handlers_put.go
+++ b/weed/s3api/s3api_object_handlers_put.go
@@ -608,6 +608,22 @@ func mapValidationErrorToS3Error(err error) s3err.ErrorCode {
// For invalid retention mode, return InvalidRequest
// This matches the test expectations
return s3err.ErrInvalidRequest
+ case errors.Is(err, ErrComplianceModeActive):
+ // For compliance mode retention violations, return AccessDenied
+ // This matches the test expectations
+ return s3err.ErrAccessDenied
+ case errors.Is(err, ErrGovernanceModeActive):
+ // For governance mode retention violations, return AccessDenied
+ // This matches the test expectations
+ return s3err.ErrAccessDenied
+ case errors.Is(err, ErrObjectUnderLegalHold):
+ // For legal hold violations, return AccessDenied
+ // This matches the test expectations
+ return s3err.ErrAccessDenied
+ case errors.Is(err, ErrGovernanceBypassNotPermitted):
+ // For governance bypass permission violations, return AccessDenied
+ // This matches the test expectations
+ return s3err.ErrAccessDenied
// Validation error constants
case errors.Is(err, ErrObjectLockConfigurationMissingEnabled):
return s3err.ErrMalformedXML