mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-12-04 11:09:03 +08:00
29 lines
688 B
Go
29 lines
688 B
Go
|
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
|
||
|
}
|