mirror of https://github.com/h44z/wg-portal.git
				
				
				
			ldap-sync: fix creation of only one user per LDAP sync (#375)
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:
		
							parent
							
								
									67f076effe
								
							
						
					
					
						commit
						eeb0c87c68
					
				| 
						 | 
					@ -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()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue