]> source.dussan.org Git - gitea.git/commitdiff
Do not try to recreate ldap user if they are already created (#9900)
authorzeripath <art27@cantab.net>
Tue, 21 Jan 2020 18:49:30 +0000 (18:49 +0000)
committerGitHub <noreply@github.com>
Tue, 21 Jan 2020 18:49:30 +0000 (18:49 +0000)
* Do not try to recreate ldap user if they are already created

* just remove autoregister

Co-authored-by: techknowlogick <matti@mdranta.net>
models/login_source.go

index 0c4d444fecf61a71764d7259fb66db89b1526199..f5dae860f8b49fd14fbbba9901fa7248809d6215 100644 (file)
@@ -461,7 +461,7 @@ var (
 
 // LoginViaLDAP queries if login/password is valid against the LDAP directory pool,
 // and create a local user if success when enabled.
-func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoRegister bool) (*User, error) {
+func LoginViaLDAP(user *User, login, password string, source *LoginSource) (*User, error) {
        sr := source.Cfg.(*LDAPConfig).SearchEntry(login, password, source.Type == LoginDLDAP)
        if sr == nil {
                // User not in LDAP, do nothing
@@ -491,7 +491,7 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource, autoR
                }
        }
 
-       if !autoRegister {
+       if user != nil {
                if isAttributeSSHPublicKeySet && synchronizeLdapSSHPublicKeys(user, source, sr.SSHPublicKey) {
                        return user, RewriteAllPublicKeys()
                }
@@ -602,7 +602,7 @@ func SMTPAuth(a smtp.Auth, cfg *SMTPConfig) error {
 
 // LoginViaSMTP queries if login/password is valid against the SMTP,
 // and create a local user if success when enabled.
-func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPConfig, autoRegister bool) (*User, error) {
+func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPConfig) (*User, error) {
        // Verify allowed domains.
        if len(cfg.AllowedDomains) > 0 {
                idx := strings.Index(login, "@")
@@ -633,7 +633,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
                return nil, err
        }
 
-       if !autoRegister {
+       if user != nil {
                return user, nil
        }
 
@@ -665,7 +665,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
 
 // LoginViaPAM queries if login/password is valid against the PAM,
 // and create a local user if success when enabled.
-func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMConfig, autoRegister bool) (*User, error) {
+func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMConfig) (*User, error) {
        if err := pam.Auth(cfg.ServiceName, login, password); err != nil {
                if strings.Contains(err.Error(), "Authentication failure") {
                        return nil, ErrUserNotExist{0, login, 0}
@@ -673,7 +673,7 @@ func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMCon
                return nil, err
        }
 
-       if !autoRegister {
+       if user != nil {
                return user, nil
        }
 
@@ -691,7 +691,7 @@ func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMCon
 }
 
 // ExternalUserLogin attempts a login using external source types.
-func ExternalUserLogin(user *User, login, password string, source *LoginSource, autoRegister bool) (*User, error) {
+func ExternalUserLogin(user *User, login, password string, source *LoginSource) (*User, error) {
        if !source.IsActived {
                return nil, ErrLoginSourceNotActived
        }
@@ -699,11 +699,11 @@ func ExternalUserLogin(user *User, login, password string, source *LoginSource,
        var err error
        switch source.Type {
        case LoginLDAP, LoginDLDAP:
-               user, err = LoginViaLDAP(user, login, password, source, autoRegister)
+               user, err = LoginViaLDAP(user, login, password, source)
        case LoginSMTP:
-               user, err = LoginViaSMTP(user, login, password, source.ID, source.Cfg.(*SMTPConfig), autoRegister)
+               user, err = LoginViaSMTP(user, login, password, source.ID, source.Cfg.(*SMTPConfig))
        case LoginPAM:
-               user, err = LoginViaPAM(user, login, password, source.ID, source.Cfg.(*PAMConfig), autoRegister)
+               user, err = LoginViaPAM(user, login, password, source.ID, source.Cfg.(*PAMConfig))
        default:
                return nil, ErrUnsupportedLoginType
        }
@@ -783,7 +783,7 @@ func UserSignIn(username, password string) (*User, error) {
                                return nil, ErrLoginSourceNotExist{user.LoginSource}
                        }
 
-                       return ExternalUserLogin(user, user.LoginName, password, &source, false)
+                       return ExternalUserLogin(user, user.LoginName, password, &source)
                }
        }
 
@@ -797,7 +797,7 @@ func UserSignIn(username, password string) (*User, error) {
                        // don't try to authenticate against OAuth2 and SSPI sources here
                        continue
                }
-               authUser, err := ExternalUserLogin(nil, username, password, source, true)
+               authUser, err := ExternalUserLogin(nil, username, password, source)
                if err == nil {
                        return authUser, nil
                }