aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguosj <515878133@qq.com>2022-07-11 16:38:41 +0800
committerguosj <515878133@qq.com>2022-07-11 16:38:41 +0800
commit7dbf19d09a137fb1b792459e2b6fb75e49fa8a3e (patch)
treef99df2ba20cde8ca2b3f225cb68dbefd3e970a44
parenta77c2232bef52235f5cde008026948053e77bc85 (diff)
downloadseaweedfs-7dbf19d09a137fb1b792459e2b6fb75e49fa8a3e.tar.xz
seaweedfs-7dbf19d09a137fb1b792459e2b6fb75e49fa8a3e.zip
refine PutUserPolicy
-rw-r--r--weed/iamapi/iamapi_management_handlers.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/weed/iamapi/iamapi_management_handlers.go b/weed/iamapi/iamapi_management_handlers.go
index 488e92aa5..fdd943b28 100644
--- a/weed/iamapi/iamapi_management_handlers.go
+++ b/weed/iamapi/iamapi_management_handlers.go
@@ -204,6 +204,7 @@ func (iama *IamApiServer) CreatePolicy(s3cfg *iam_pb.S3ApiConfiguration, values
return resp, nil
}
+// https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html
func (iama *IamApiServer) PutUserPolicy(s3cfg *iam_pb.S3ApiConfiguration, values url.Values) (resp PutUserPolicyResponse, err error) {
userName := values.Get("UserName")
policyName := values.Get("PolicyName")
@@ -212,15 +213,21 @@ func (iama *IamApiServer) PutUserPolicy(s3cfg *iam_pb.S3ApiConfiguration, values
if err != nil {
return PutUserPolicyResponse{}, err
}
+ isFound := false
policyDocuments[policyName] = &policyDocument
actions := GetActions(&policyDocument)
for _, ident := range s3cfg.Identities {
- if userName == ident.Name {
- for _, action := range actions {
- ident.Actions = append(ident.Actions, action)
- }
- break
+ if userName != ident.Name {
+ continue
+ }
+ isFound = true
+ for _, action := range actions {
+ ident.Actions = append(ident.Actions, action)
}
+ break
+ }
+ if !isFound {
+ return resp, fmt.Errorf("%s: the user with name %s cannot be found", iam.ErrCodeNoSuchEntityException, userName)
}
return resp, nil
}