Browse Source

iam: add group side effects on user deletion and rename

When a user is deleted, remove them from all groups they belong to.
When a user is renamed, update group membership references. Applied
to both embedded and standalone IAM handlers.
pull/8560/head
Chris Lu 4 days ago
parent
commit
ccf0057ea8
  1. 4
      weed/iamapi/iamapi_management_handlers.go
  2. 18
      weed/s3api/s3api_embedded_iam.go

4
weed/iamapi/iamapi_management_handlers.go

@ -219,6 +219,8 @@ func (iama *IamApiServer) DeleteUser(s3cfg *iam_pb.S3ApiConfiguration, userName
}
}
s3cfg.Identities = append(s3cfg.Identities[:i], s3cfg.Identities[i+1:]...)
// Remove user from all groups
removeUserFromAllGroups(s3cfg, userName)
return resp, nil
}
}
@ -258,6 +260,8 @@ func (iama *IamApiServer) UpdateUser(s3cfg *iam_pb.S3ApiConfiguration, values ur
}
}
}
// Update group membership references
updateUserInGroups(s3cfg, userName, newUserName)
return resp, nil
}
}

18
weed/s3api/s3api_embedded_iam.go

@ -315,6 +315,15 @@ func (e *EmbeddedIamApi) DeleteUser(s3cfg *iam_pb.S3ApiConfiguration, userName s
}
}
s3cfg.Identities = append(s3cfg.Identities[:i], s3cfg.Identities[i+1:]...)
// Remove user from all groups
for _, g := range s3cfg.Groups {
for j, m := range g.Members {
if m == userName {
g.Members = append(g.Members[:j], g.Members[j+1:]...)
break
}
}
}
return resp, nil
}
}
@ -342,6 +351,15 @@ func (e *EmbeddedIamApi) UpdateUser(s3cfg *iam_pb.S3ApiConfiguration, values url
for _, ident := range s3cfg.Identities {
if userName == ident.Name {
ident.Name = newUserName
// Update group membership references
for _, g := range s3cfg.Groups {
for j, m := range g.Members {
if m == userName {
g.Members[j] = newUserName
break
}
}
}
return resp, nil
}
}

Loading…
Cancel
Save