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
+			}
 		}
 	}