diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-07-12 21:58:55 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-12 21:58:55 -0700 |
| commit | 1549ee2e154ab040e211ac7b3bc361272069abef (patch) | |
| tree | 611da8241e78a40ab4d94524117b097403b46f35 /weed/s3api/s3api_object_handlers_put.go | |
| parent | 687a6a6c1de0fb67b51ec9bfd1781a6c255ff695 (diff) | |
| download | seaweedfs-1549ee2e154ab040e211ac7b3bc361272069abef.tar.xz seaweedfs-1549ee2e154ab040e211ac7b3bc361272069abef.zip | |
implement PubObjectRetention and WORM (#6969)
* implement PubObjectRetention and WORM
* Update s3_worm_integration_test.go
* avoid previous buckets
* Update s3-versioning-tests.yml
* address comments
* address comments
* rename to ExtObjectLockModeKey
* only checkObjectLockPermissions if versioningEnabled
* address comments
* comments
* Revert "comments"
This reverts commit 6736434176f86c6e222b867777324b17c2de716f.
* Update s3api_object_handlers_skip.go
* Update s3api_object_retention_test.go
* add version id to ObjectIdentifier
* address comments
* add comments
* Add proper error logging for timestamp parsing failures
* address comments
* add version id to the error
* Update weed/s3api/s3api_object_retention_test.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/s3api/s3api_object_retention.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* constants
* fix comments
* address comments
* address comment
* refactor out handleObjectLockAvailabilityCheck
* errors.Is ErrBucketNotFound
* better error checking
* address comments
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Diffstat (limited to 'weed/s3api/s3api_object_handlers_put.go')
| -rw-r--r-- | weed/s3api/s3api_object_handlers_put.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/weed/s3api/s3api_object_handlers_put.go b/weed/s3api/s3api_object_handlers_put.go index 8b85a049a..371ab870f 100644 --- a/weed/s3api/s3api_object_handlers_put.go +++ b/weed/s3api/s3api_object_handlers_put.go @@ -85,6 +85,13 @@ func (s3a *S3ApiServer) PutObjectHandler(w http.ResponseWriter, r *http.Request) glog.V(1).Infof("PutObjectHandler: bucket %s, object %s, versioningEnabled=%v", bucket, object, versioningEnabled) + // Check object lock permissions before PUT operation (only for versioned buckets) + bypassGovernance := r.Header.Get("x-amz-bypass-governance-retention") == "true" + if err := s3a.checkObjectLockPermissionsForPut(bucket, object, bypassGovernance, versioningEnabled); err != nil { + s3err.WriteErrorResponse(w, r, s3err.ErrAccessDenied) + return + } + if versioningEnabled { // Handle versioned PUT glog.V(1).Infof("PutObjectHandler: using versioned PUT for %s/%s", bucket, object) |
