From bef3d9ed53adc559814b5bddcb53fd3884904ae9 Mon Sep 17 00:00:00 2001 From: abin-rafay <95842839+abin-rafay@users.noreply.github.com> Date: Fri, 11 Mar 2022 17:36:56 +0530 Subject: [PATCH] When adding users to group drop duplicate users (#50) --- pkg/service/group.go | 2 +- pkg/service/utils.go | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 pkg/service/utils.go diff --git a/pkg/service/group.go b/pkg/service/group.go index 6452b98..9f3300c 100644 --- a/pkg/service/group.go +++ b/pkg/service/group.go @@ -223,7 +223,7 @@ func (s *groupService) createGroupAccountRelations(ctx context.Context, groupId // TODO: add transactions var grpaccs []models.GroupAccount var ugs []*authzv1.UserGroup - for _, account := range group.GetSpec().GetUsers() { + for _, account := range unique(group.GetSpec().GetUsers()) { // FIXME: do combined lookup entity, err := s.dao.GetIdByTraits(ctx, account, &models.KratosIdentities{}) if err != nil { diff --git a/pkg/service/utils.go b/pkg/service/utils.go new file mode 100644 index 0000000..e08dbcd --- /dev/null +++ b/pkg/service/utils.go @@ -0,0 +1,13 @@ +package service + +func unique(items []string) []string { + keys := make(map[string]bool) + list := []string{} + for _, entry := range items { + if _, value := keys[entry]; !value { + keys[entry] = true + list = append(list, entry) + } + } + return list +}