Browse Source

fix: validate members/policies before deleting group in admin handler

AdminServer.DeleteGroup now checks for attached members and policies
before delegating to credentialManager, matching the IAM handler guards.
pull/8560/head
Chris Lu 4 days ago
parent
commit
a06d6c56e6
  1. 11
      weed/admin/dash/group_management.go

11
weed/admin/dash/group_management.go

@ -102,6 +102,17 @@ func (s *AdminServer) DeleteGroup(ctx context.Context, name string) error {
if s.credentialManager == nil { if s.credentialManager == nil {
return fmt.Errorf("credential manager not available") return fmt.Errorf("credential manager not available")
} }
// Check for members and attached policies before deleting (same guards as IAM handlers)
g, err := s.credentialManager.GetGroup(ctx, name)
if err != nil {
return fmt.Errorf("failed to get group: %w", err)
}
if len(g.Members) > 0 {
return fmt.Errorf("cannot delete group %s: group has %d member(s)", name, len(g.Members))
}
if len(g.PolicyNames) > 0 {
return fmt.Errorf("cannot delete group %s: group has %d attached policy(ies)", name, len(g.PolicyNames))
}
if err := s.credentialManager.DeleteGroup(ctx, name); err != nil { if err := s.credentialManager.DeleteGroup(ctx, name); err != nil {
return fmt.Errorf("failed to delete group: %w", err) return fmt.Errorf("failed to delete group: %w", err)
} }

Loading…
Cancel
Save