|
|
@@ -37,21 +37,21 @@ type LoginType int
|
|
|
|
|
|
// Note: new type must append to the end of list to maintain compatibility.
|
|
|
const (
|
|
|
- LOGIN_NOTYPE LoginType = iota
|
|
|
- LOGIN_PLAIN // 1
|
|
|
- LOGIN_LDAP // 2
|
|
|
- LOGIN_SMTP // 3
|
|
|
- LOGIN_PAM // 4
|
|
|
- LOGIN_DLDAP // 5
|
|
|
- LOGIN_GITHUB // 6
|
|
|
+ LoginNotype LoginType = iota
|
|
|
+ LoginPlain // 1
|
|
|
+ LoginLDAP // 2
|
|
|
+ LoginSMTP // 3
|
|
|
+ LoginPAM // 4
|
|
|
+ LoginDLDAP // 5
|
|
|
+ LoginGitHub // 6
|
|
|
)
|
|
|
|
|
|
var LoginNames = map[LoginType]string{
|
|
|
- LOGIN_LDAP: "LDAP (via BindDN)",
|
|
|
- LOGIN_DLDAP: "LDAP (simple auth)", // Via direct bind
|
|
|
- LOGIN_SMTP: "SMTP",
|
|
|
- LOGIN_PAM: "PAM",
|
|
|
- LOGIN_GITHUB: "GitHub",
|
|
|
+ LoginLDAP: "LDAP (via BindDN)",
|
|
|
+ LoginDLDAP: "LDAP (simple auth)", // Via direct bind
|
|
|
+ LoginSMTP: "SMTP",
|
|
|
+ LoginPAM: "PAM",
|
|
|
+ LoginGitHub: "GitHub",
|
|
|
}
|
|
|
|
|
|
var SecurityProtocolNames = map[ldap.SecurityProtocol]string{
|
|
|
@@ -187,13 +187,13 @@ func (s *LoginSource) BeforeSet(colName string, val xorm.Cell) {
|
|
|
switch colName {
|
|
|
case "type":
|
|
|
switch LoginType(Cell2Int64(val)) {
|
|
|
- case LOGIN_LDAP, LOGIN_DLDAP:
|
|
|
+ case LoginLDAP, LoginDLDAP:
|
|
|
s.Cfg = new(LDAPConfig)
|
|
|
- case LOGIN_SMTP:
|
|
|
+ case LoginSMTP:
|
|
|
s.Cfg = new(SMTPConfig)
|
|
|
- case LOGIN_PAM:
|
|
|
+ case LoginPAM:
|
|
|
s.Cfg = new(PAMConfig)
|
|
|
- case LOGIN_GITHUB:
|
|
|
+ case LoginGitHub:
|
|
|
s.Cfg = new(GitHubConfig)
|
|
|
default:
|
|
|
panic("unrecognized login source type: " + com.ToStr(*val))
|
|
|
@@ -215,23 +215,23 @@ func (s *LoginSource) TypeName() string {
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) IsLDAP() bool {
|
|
|
- return s.Type == LOGIN_LDAP
|
|
|
+ return s.Type == LoginLDAP
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) IsDLDAP() bool {
|
|
|
- return s.Type == LOGIN_DLDAP
|
|
|
+ return s.Type == LoginDLDAP
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) IsSMTP() bool {
|
|
|
- return s.Type == LOGIN_SMTP
|
|
|
+ return s.Type == LoginSMTP
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) IsPAM() bool {
|
|
|
- return s.Type == LOGIN_PAM
|
|
|
+ return s.Type == LoginPAM
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) IsGitHub() bool {
|
|
|
- return s.Type == LOGIN_GITHUB
|
|
|
+ return s.Type == LoginGitHub
|
|
|
}
|
|
|
|
|
|
func (s *LoginSource) HasTLS() bool {
|
|
|
@@ -242,9 +242,9 @@ func (s *LoginSource) HasTLS() bool {
|
|
|
|
|
|
func (s *LoginSource) UseTLS() bool {
|
|
|
switch s.Type {
|
|
|
- case LOGIN_LDAP, LOGIN_DLDAP:
|
|
|
+ case LoginLDAP, LoginDLDAP:
|
|
|
return s.LDAP().SecurityProtocol != ldap.SECURITY_PROTOCOL_UNENCRYPTED
|
|
|
- case LOGIN_SMTP:
|
|
|
+ case LoginSMTP:
|
|
|
return s.SMTP().TLS
|
|
|
}
|
|
|
|
|
|
@@ -253,9 +253,9 @@ func (s *LoginSource) UseTLS() bool {
|
|
|
|
|
|
func (s *LoginSource) SkipVerify() bool {
|
|
|
switch s.Type {
|
|
|
- case LOGIN_LDAP, LOGIN_DLDAP:
|
|
|
+ case LoginLDAP, LoginDLDAP:
|
|
|
return s.LDAP().SkipVerify
|
|
|
- case LOGIN_SMTP:
|
|
|
+ case LoginSMTP:
|
|
|
return s.SMTP().SkipVerify
|
|
|
}
|
|
|
|
|
|
@@ -509,19 +509,19 @@ func LoadAuthSources() {
|
|
|
authType := s.Key("type").String()
|
|
|
switch authType {
|
|
|
case "ldap_bind_dn":
|
|
|
- loginSource.Type = LOGIN_LDAP
|
|
|
+ loginSource.Type = LoginLDAP
|
|
|
loginSource.Cfg = &LDAPConfig{}
|
|
|
case "ldap_simple_auth":
|
|
|
- loginSource.Type = LOGIN_DLDAP
|
|
|
+ loginSource.Type = LoginDLDAP
|
|
|
loginSource.Cfg = &LDAPConfig{}
|
|
|
case "smtp":
|
|
|
- loginSource.Type = LOGIN_SMTP
|
|
|
+ loginSource.Type = LoginSMTP
|
|
|
loginSource.Cfg = &SMTPConfig{}
|
|
|
case "pam":
|
|
|
- loginSource.Type = LOGIN_PAM
|
|
|
+ loginSource.Type = LoginPAM
|
|
|
loginSource.Cfg = &PAMConfig{}
|
|
|
case "github":
|
|
|
- loginSource.Type = LOGIN_GITHUB
|
|
|
+ loginSource.Type = LoginGitHub
|
|
|
loginSource.Cfg = &GitHubConfig{}
|
|
|
default:
|
|
|
raven.CaptureErrorAndWait(err, nil)
|
|
|
@@ -553,7 +553,7 @@ func composeFullName(firstname, surname, username string) string {
|
|
|
// 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) {
|
|
|
- username, fn, sn, mail, isAdmin, succeed := source.Cfg.(*LDAPConfig).SearchEntry(login, password, source.Type == LOGIN_DLDAP)
|
|
|
+ username, fn, sn, mail, isAdmin, succeed := source.Cfg.(*LDAPConfig).SearchEntry(login, password, source.Type == LoginDLDAP)
|
|
|
if !succeed {
|
|
|
// User not in LDAP, do nothing
|
|
|
return nil, errors.UserNotExist{0, login}
|
|
|
@@ -621,11 +621,11 @@ func (auth *smtpLoginAuth) Next(fromServer []byte, more bool) ([]byte, error) {
|
|
|
}
|
|
|
|
|
|
const (
|
|
|
- SMTP_PLAIN = "PLAIN"
|
|
|
- SMTP_LOGIN = "LOGIN"
|
|
|
+ SMTPPlain = "PLAIN"
|
|
|
+ SMTPLogin = "LOGIN"
|
|
|
)
|
|
|
|
|
|
-var SMTPAuths = []string{SMTP_PLAIN, SMTP_LOGIN}
|
|
|
+var SMTPAuths = []string{SMTPPlain, SMTPLogin}
|
|
|
|
|
|
func SMTPAuth(a smtp.Auth, cfg *SMTPConfig) error {
|
|
|
c, err := smtp.Dial(fmt.Sprintf("%s:%d", cfg.Host, cfg.Port))
|
|
|
@@ -674,9 +674,9 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
|
|
|
}
|
|
|
|
|
|
var auth smtp.Auth
|
|
|
- if cfg.Auth == SMTP_PLAIN {
|
|
|
+ if cfg.Auth == SMTPPlain {
|
|
|
auth = smtp.PlainAuth("", login, password, cfg.Host)
|
|
|
- } else if cfg.Auth == SMTP_LOGIN {
|
|
|
+ } else if cfg.Auth == SMTPLogin {
|
|
|
auth = &smtpLoginAuth{login, password}
|
|
|
} else {
|
|
|
return nil, errors.New("Unsupported SMTP authentication type")
|
|
|
@@ -708,7 +708,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
|
|
|
Name: strings.ToLower(username),
|
|
|
Email: login,
|
|
|
Passwd: password,
|
|
|
- LoginType: LOGIN_SMTP,
|
|
|
+ LoginType: LoginSMTP,
|
|
|
LoginSource: sourceID,
|
|
|
LoginName: login,
|
|
|
IsActive: true,
|
|
|
@@ -735,7 +735,7 @@ func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMCon
|
|
|
Name: login,
|
|
|
Email: login,
|
|
|
Passwd: password,
|
|
|
- LoginType: LOGIN_PAM,
|
|
|
+ LoginType: LoginPAM,
|
|
|
LoginSource: sourceID,
|
|
|
LoginName: login,
|
|
|
IsActive: true,
|
|
|
@@ -762,7 +762,7 @@ func LoginViaGitHub(user *User, login, password string, sourceID int64, cfg *Git
|
|
|
Email: email,
|
|
|
Website: url,
|
|
|
Passwd: password,
|
|
|
- LoginType: LOGIN_GITHUB,
|
|
|
+ LoginType: LoginGitHub,
|
|
|
LoginSource: sourceID,
|
|
|
LoginName: login,
|
|
|
IsActive: true,
|
|
|
@@ -777,13 +777,13 @@ func remoteUserLogin(user *User, login, password string, source *LoginSource, au
|
|
|
}
|
|
|
|
|
|
switch source.Type {
|
|
|
- case LOGIN_LDAP, LOGIN_DLDAP:
|
|
|
+ case LoginLDAP, LoginDLDAP:
|
|
|
return LoginViaLDAP(user, login, password, source, autoRegister)
|
|
|
- case LOGIN_SMTP:
|
|
|
+ case LoginSMTP:
|
|
|
return LoginViaSMTP(user, login, password, source.ID, source.Cfg.(*SMTPConfig), autoRegister)
|
|
|
- case LOGIN_PAM:
|
|
|
+ case LoginPAM:
|
|
|
return LoginViaPAM(user, login, password, source.ID, source.Cfg.(*PAMConfig), autoRegister)
|
|
|
- case LOGIN_GITHUB:
|
|
|
+ case LoginGitHub:
|
|
|
return LoginViaGitHub(user, login, password, source.ID, source.Cfg.(*GitHubConfig), autoRegister)
|
|
|
}
|
|
|
|
|
|
@@ -813,8 +813,8 @@ func UserLogin(username, password string, loginSourceID int64) (*User, error) {
|
|
|
}
|
|
|
|
|
|
// Validate password hash fetched from database for local accounts
|
|
|
- if user.LoginType == LOGIN_NOTYPE ||
|
|
|
- user.LoginType == LOGIN_PLAIN {
|
|
|
+ if user.LoginType == LoginNotype ||
|
|
|
+ user.LoginType == LoginPlain {
|
|
|
if user.ValidatePassword(password) {
|
|
|
return user, nil
|
|
|
}
|