Browse Source

fix: add name collision check in embedded IAM UpdateUser

The embedded IAM handler renamed users without checking if the
target name already existed, unlike the standalone handler.
pull/8560/head
Chris Lu 4 days ago
parent
commit
d3efe5dde9
  1. 8
      weed/s3api/s3api_embedded_iam.go

8
weed/s3api/s3api_embedded_iam.go

@ -349,6 +349,14 @@ func (e *EmbeddedIamApi) UpdateUser(s3cfg *iam_pb.S3ApiConfiguration, values url
userName := values.Get("UserName") userName := values.Get("UserName")
newUserName := values.Get("NewUserName") newUserName := values.Get("NewUserName")
if newUserName != "" { if newUserName != "" {
// Check for name collision before renaming
if newUserName != userName {
for _, ident := range s3cfg.Identities {
if ident.Name == newUserName {
return resp, &iamError{Code: iam.ErrCodeEntityAlreadyExistsException, Error: fmt.Errorf("user %s already exists", newUserName)}
}
}
}
for _, ident := range s3cfg.Identities { for _, ident := range s3cfg.Identities {
if userName == ident.Name { if userName == ident.Name {
ident.Name = newUserName ident.Name = newUserName

Loading…
Cancel
Save