diff --git a/models/login_source.go b/models/login_source.go index ce03c4154f6d4..453ad57dcae4a 100644 --- a/models/login_source.go +++ b/models/login_source.go @@ -403,6 +403,20 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoR var isAttributeSSHPublicKeySet = len(strings.TrimSpace(source.LDAP().AttributeSSHPublicKey)) > 0 + // Update User if exist + isExist, err := IsUserExist(0, sr.Username) + if err != nil { + return nil, err + } else if isExist { + user.FullName = composeFullName(sr.Name, sr.Surname, sr.Username) + user.Email = sr.Mail + // Change existing admin flag only if AdminFilter option is set + if len(source.LDAP().AdminFilter) > 0 { + user.IsAdmin = sr.IsAdmin + } + UpdateUserCols(user, "full_name", "email", "is_admin") + } + if !autoRegister { if isAttributeSSHPublicKeySet && synchronizeLdapSSHPublicKeys(user, source, sr.SSHPublicKey) { return user, RewriteAllPublicKeys() @@ -436,7 +450,7 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoR IsAdmin: sr.IsAdmin, } - err := CreateUser(user) + err = CreateUser(user) if err == nil && isAttributeSSHPublicKeySet && addLdapSSHPublicKeys(user, source, sr.SSHPublicKey) { err = RewriteAllPublicKeys()