ldap-sync: fix creation of only one user per LDAP sync

Before this fix, a too early `return` statement terminated the
`updateLdapUsers()` function, whenever one not already existing user was
created. Therefore, in each LDAP sync a maximum of one new user could be
created (i.e., it took x LDAP sync cycles until x new LDAP users are
registered in wg-portal). Depending on the LDAP `sync_interval` this can
take a long time and produces unecessary long waiting times until users
are available in wg-portal.

Removing the early return statement, and move the remainder of the
function into an `else` statement, so that all new users can be
added in a single LDAP sync.

Also adding a debug statement to better trace the behavior.

Signed-off-by: klmmr <35450576+klmmr@users.noreply.github.com>
This commit is contained in:
klmmr 2025-02-22 10:24:48 +01:00
parent 67f076effe
commit 209b835389

View File

@ -506,18 +506,16 @@ func (m Manager) updateLdapUsers(
tctx, cancel := context.WithTimeout(ctx, 30*time.Second) tctx, cancel := context.WithTimeout(ctx, 30*time.Second)
tctx = domain.SetUserInfo(tctx, domain.SystemAdminContextUserInfo()) tctx = domain.SetUserInfo(tctx, domain.SystemAdminContextUserInfo())
// create new user
if existingUser == nil { if existingUser == nil {
// create new user
logrus.Tracef("creating new user %s from provider %s...", user.Identifier, provider.ProviderName)
err := m.NewUser(tctx, user) err := m.NewUser(tctx, user)
if err != nil { if err != nil {
cancel() cancel()
return fmt.Errorf("create error for user id %s: %w", user.Identifier, err) return fmt.Errorf("create error for user id %s: %w", user.Identifier, err)
} }
} else {
cancel()
return nil
}
// update existing user // update existing user
if provider.AutoReEnable && existingUser.DisabledReason == domain.DisabledReasonLdapMissing { if provider.AutoReEnable && existingUser.DisabledReason == domain.DisabledReasonLdapMissing {
user.Disabled = nil user.Disabled = nil
@ -552,6 +550,7 @@ func (m Manager) updateLdapUsers(
m.bus.Publish(app.TopicUserEnabled, *user) m.bus.Publish(app.TopicUserEnabled, *user)
} }
} }
}
cancel() cancel()
} }