From 7f1af24318299f0c1f867d72b8adef3e4d2ee626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 21 Sep 2015 09:19:50 +0200 Subject: [PATCH] fix(ldap): fixed ldap org roles sync, did only add one new role per login, now all roles are added, fixes #2766 --- pkg/login/ldap.go | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pkg/login/ldap.go b/pkg/login/ldap.go index 1a779cc7017..af9982e77df 100644 --- a/pkg/login/ldap.go +++ b/pkg/login/ldap.go @@ -151,9 +151,12 @@ func (a *ldapAuther) syncOrgRoles(user *m.User, ldapUser *ldapUserInfo) error { return err } + handledOrgIds := map[int64]bool{} + // update or remove org roles for _, org := range orgsQuery.Result { match := false + handledOrgIds[org.OrgId] = true for _, group := range a.server.LdapGroups { if org.OrgId != group.OrgId { @@ -189,22 +192,18 @@ func (a *ldapAuther) syncOrgRoles(user *m.User, ldapUser *ldapUserInfo) error { continue } - match := false - for _, org := range orgsQuery.Result { - if group.OrgId == org.OrgId { - match = true - break - } + if _, exists := handledOrgIds[group.OrgId]; exists { + continue } - if !match { - // add role - cmd := m.AddOrgUserCommand{UserId: user.Id, Role: group.OrgRole, OrgId: group.OrgId} - if err := bus.Dispatch(&cmd); err != nil { - return err - } - break + // add role + cmd := m.AddOrgUserCommand{UserId: user.Id, Role: group.OrgRole, OrgId: group.OrgId} + if err := bus.Dispatch(&cmd); err != nil { + return err } + + // mark this group has handled so we do not process it again + handledOrgIds[group.OrgId] = true } return nil