From ce756ee89fa1e0c27a0f3a4a26016aa6bab72648 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Mon, 20 Jan 2020 04:01:39 +0100 Subject: [PATCH] Check user != nil before checking values (#9881) (#9883) * Check user != nil before checking values * Handle autoAdmin Co-authored-by: zeripath --- models/login_source.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/models/login_source.go b/models/login_source.go index 0a8a92336..0c4d444fe 100644 --- a/models/login_source.go +++ b/models/login_source.go @@ -473,13 +473,21 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoR // Update User admin flag if exist if isExist, err := IsUserExist(0, sr.Username); err != nil { return nil, err - } else if isExist && - !user.ProhibitLogin && len(source.LDAP().AdminFilter) > 0 && user.IsAdmin != sr.IsAdmin { - // Change existing admin flag only if AdminFilter option is set - user.IsAdmin = sr.IsAdmin - err = UpdateUserCols(user, "is_admin") - if err != nil { - return nil, err + } else if isExist { + if user == nil { + user, err = GetUserByName(sr.Username) + if err != nil { + return nil, err + } + } + if user != nil && + !user.ProhibitLogin && len(source.LDAP().AdminFilter) > 0 && user.IsAdmin != sr.IsAdmin { + // Change existing admin flag only if AdminFilter option is set + user.IsAdmin = sr.IsAdmin + err = UpdateUserCols(user, "is_admin") + if err != nil { + return nil, err + } } }