diff options
| author | chrislu <chris.lu@gmail.com> | 2025-07-18 20:16:04 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-07-18 20:16:04 -0700 |
| commit | 1d1c7174932474dfe315143c43830900286021d6 (patch) | |
| tree | c07a72d76492950df1176e5675df801af5a3ef06 /weed/s3api/s3api_object_handlers_delete.go | |
| parent | 7661449f82a85a397410a3013674a3fded5f9ee4 (diff) | |
| download | seaweedfs-1d1c7174932474dfe315143c43830900286021d6.tar.xz seaweedfs-1d1c7174932474dfe315143c43830900286021d6.zip | |
refactor
Diffstat (limited to 'weed/s3api/s3api_object_handlers_delete.go')
| -rw-r--r-- | weed/s3api/s3api_object_handlers_delete.go | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/weed/s3api/s3api_object_handlers_delete.go b/weed/s3api/s3api_object_handlers_delete.go index 72f484429..22d334906 100644 --- a/weed/s3api/s3api_object_handlers_delete.go +++ b/weed/s3api/s3api_object_handlers_delete.go @@ -53,8 +53,8 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque // Handle versioned delete if versionId != "" { // Check object lock permissions before deleting specific version - bypassGovernance := s3a.validateGovernanceBypass(r, bucket, object) - if err := s3a.checkObjectLockPermissions(r, bucket, object, versionId, bypassGovernance); err != nil { + governanceBypassAllowed := s3a.evaluateGovernanceBypassRequest(r, bucket, object) + if err := s3a.enforceObjectLockProtections(r, bucket, object, versionId, governanceBypassAllowed); err != nil { glog.V(2).Infof("DeleteObjectHandler: object lock check failed for %s/%s: %v", bucket, object, err) s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) return @@ -73,8 +73,8 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque } else { // Check object lock permissions before creating delete marker // AWS S3 behavior: delete operations fail if latest version has retention protection - bypassGovernance := s3a.validateGovernanceBypass(r, bucket, object) - if err := s3a.checkObjectLockPermissions(r, bucket, object, "", bypassGovernance); err != nil { + governanceBypassAllowed := s3a.evaluateGovernanceBypassRequest(r, bucket, object) + if err := s3a.enforceObjectLockProtections(r, bucket, object, "", governanceBypassAllowed); err != nil { glog.V(2).Infof("DeleteObjectHandler: object lock check failed for %s/%s: %v", bucket, object, err) s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) return @@ -95,8 +95,8 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque } else { // Handle regular delete (non-versioned) // Check object lock permissions before deleting object - bypassGovernance := s3a.validateGovernanceBypass(r, bucket, object) - if err := s3a.checkObjectLockPermissions(r, bucket, object, "", bypassGovernance); err != nil { + governanceBypassAllowed := s3a.evaluateGovernanceBypassRequest(r, bucket, object) + if err := s3a.enforceObjectLockProtections(r, bucket, object, "", governanceBypassAllowed); err != nil { glog.V(2).Infof("DeleteObjectHandler: object lock check failed for %s/%s: %v", bucket, object, err) s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) return @@ -231,8 +231,8 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h // Check object lock permissions before deletion (only for versioned buckets) if versioningEnabled { // Validate governance bypass for this specific object - bypassGovernance := s3a.validateGovernanceBypass(r, bucket, object.Key) - if err := s3a.checkObjectLockPermissions(r, bucket, object.Key, object.VersionId, bypassGovernance); err != nil { + governanceBypassAllowed := s3a.evaluateGovernanceBypassRequest(r, bucket, object.Key) + if err := s3a.enforceObjectLockProtections(r, bucket, object.Key, object.VersionId, governanceBypassAllowed); err != nil { glog.V(2).Infof("DeleteMultipleObjectsHandler: object lock check failed for %s/%s (version: %s): %v", bucket, object.Key, object.VersionId, err) deleteErrors = append(deleteErrors, DeleteError{ Code: s3err.GetAPIError(s3err.ErrAccessDenied).Code, |
