aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_acp.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/s3api/s3api_acp.go')
-rw-r--r--weed/s3api/s3api_acp.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/weed/s3api/s3api_acp.go b/weed/s3api/s3api_acp.go
new file mode 100644
index 000000000..0a79990f5
--- /dev/null
+++ b/weed/s3api/s3api_acp.go
@@ -0,0 +1,28 @@
+package s3api
+
+import (
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants"
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
+ "net/http"
+)
+
+func getAccountId(r *http.Request) string {
+ id := r.Header.Get(s3_constants.AmzAccountId)
+ if len(id) == 0 {
+ return AccountAnonymous.Id
+ } else {
+ return id
+ }
+}
+
+func (s3a *S3ApiServer) checkAccessByOwnership(r *http.Request, bucket string) s3err.ErrorCode {
+ metadata, errCode := s3a.bucketRegistry.GetBucketMetadata(bucket)
+ if errCode != s3err.ErrNone {
+ return errCode
+ }
+ accountId := getAccountId(r)
+ if accountId == AccountAdmin.Id || accountId == *metadata.Owner.ID {
+ return s3err.ErrNone
+ }
+ return s3err.ErrAccessDenied
+}