@@ -79,7 +79,7 @@ func checkVersion() { | |||
// Check dependency version. | |||
checkers := []VerChecker{ | |||
{"github.com/go-xorm/xorm", func() string { return xorm.Version }, "0.5.5.0711"}, | |||
{"github.com/go-macaron/binding", binding.Version, "0.2.1"}, | |||
{"github.com/go-macaron/binding", binding.Version, "0.3.2"}, | |||
{"github.com/go-macaron/cache", cache.Version, "0.1.2"}, | |||
{"github.com/go-macaron/csrf", csrf.Version, "0.1.0"}, | |||
{"github.com/go-macaron/i18n", i18n.Version, "0.3.0"}, | |||
@@ -8,7 +8,7 @@ imports: | |||
- name: github.com/codegangsta/cli | |||
version: 1efa31f08b9333f1bd4882d61f9d668a70cd902e | |||
- name: github.com/go-macaron/binding | |||
version: bd00823a7e9aa00cb3b1738fde244573ba7cce2c | |||
version: 9440f336b443056c90d7d448a0a55ad8c7599880 | |||
- name: github.com/go-macaron/cache | |||
version: 56173531277692bc2925924d51fda1cd0a6b8178 | |||
subpackages: | |||
@@ -43,7 +43,7 @@ imports: | |||
- name: github.com/gogits/git-module | |||
version: db93fa550116997bbe0b62baa653b8e6f4135258 | |||
- name: github.com/gogits/go-gogs-client | |||
version: 872cf281aac97429da02b6cdea942c9388eb65fb | |||
version: ee68cd9eefff11615f336e9965762f6736eeecc8 | |||
- name: github.com/issue9/identicon | |||
version: d36b54562f4cf70c83653e13dc95c220c79ef521 | |||
- name: github.com/jaytaylor/html2text | |||
@@ -15,6 +15,7 @@ import ( | |||
"time" | |||
"github.com/Unknwon/com" | |||
"github.com/go-macaron/binding" | |||
"github.com/go-xorm/core" | |||
"github.com/go-xorm/xorm" | |||
@@ -280,7 +281,7 @@ func DeleteSource(source *LoginSource) error { | |||
func LoginUserLDAPSource(u *User, loginName, passwd string, source *LoginSource, autoRegister bool) (*User, error) { | |||
cfg := source.Cfg.(*LDAPConfig) | |||
directBind := (source.Type == LOGIN_DLDAP) | |||
name, fn, sn, mail, admin, logged := cfg.SearchEntry(loginName, passwd, directBind) | |||
username, fn, sn, mail, isAdmin, logged := cfg.SearchEntry(loginName, passwd, directBind) | |||
if !logged { | |||
// User not in LDAP, do nothing | |||
return nil, ErrUserNotExist{0, loginName} | |||
@@ -291,37 +292,42 @@ func LoginUserLDAPSource(u *User, loginName, passwd string, source *LoginSource, | |||
} | |||
// Fallback. | |||
if len(name) == 0 { | |||
name = loginName | |||
if len(username) == 0 { | |||
username = loginName | |||
} | |||
// Validate username make sure it satisfies requirement. | |||
if !binding.AlphaDashDotPattern.MatchString(username) { | |||
return nil, fmt.Errorf("Invalid pattern for attribute 'username' [%s]: must be valid alpha or numeric or dash(-_) or dot characters", username) | |||
} | |||
if len(mail) == 0 { | |||
mail = fmt.Sprintf("%s@localhost", name) | |||
mail = fmt.Sprintf("%s@localhost", username) | |||
} | |||
u = &User{ | |||
LowerName: strings.ToLower(name), | |||
Name: name, | |||
FullName: composeFullName(fn, sn, name), | |||
LowerName: strings.ToLower(username), | |||
Name: username, | |||
FullName: composeFullName(fn, sn, username), | |||
LoginType: source.Type, | |||
LoginSource: source.ID, | |||
LoginName: loginName, | |||
Email: mail, | |||
IsAdmin: admin, | |||
IsAdmin: isAdmin, | |||
IsActive: true, | |||
} | |||
return u, CreateUser(u) | |||
} | |||
func composeFullName(firstName, surename, userName string) string { | |||
func composeFullName(firstname, surname, username string) string { | |||
switch { | |||
case len(firstName) == 0 && len(surename) == 0: | |||
return userName | |||
case len(firstName) == 0: | |||
return surename | |||
case len(surename) == 0: | |||
return firstName | |||
case len(firstname) == 0 && len(surname) == 0: | |||
return username | |||
case len(firstname) == 0: | |||
return surname | |||
case len(surname) == 0: | |||
return firstname | |||
default: | |||
return firstName + " " + surename | |||
return firstname + " " + surname | |||
} | |||
} | |||
@@ -210,12 +210,12 @@ func (ls *Source) SearchEntry(name, passwd string, directBind bool) (string, str | |||
return "", "", "", "", false, false | |||
} | |||
username_attr := sr.Entries[0].GetAttributeValue(ls.AttributeUsername) | |||
name_attr := sr.Entries[0].GetAttributeValue(ls.AttributeName) | |||
sn_attr := sr.Entries[0].GetAttributeValue(ls.AttributeSurname) | |||
mail_attr := sr.Entries[0].GetAttributeValue(ls.AttributeMail) | |||
username := sr.Entries[0].GetAttributeValue(ls.AttributeUsername) | |||
firstname := sr.Entries[0].GetAttributeValue(ls.AttributeName) | |||
surname := sr.Entries[0].GetAttributeValue(ls.AttributeSurname) | |||
mail := sr.Entries[0].GetAttributeValue(ls.AttributeMail) | |||
admin_attr := false | |||
isAdmin := false | |||
if len(ls.AdminFilter) > 0 { | |||
log.Trace("Checking admin with filter %s and base %s", ls.AdminFilter, userDN) | |||
search = ldap.NewSearchRequest( | |||
@@ -229,7 +229,7 @@ func (ls *Source) SearchEntry(name, passwd string, directBind bool) (string, str | |||
} else if len(sr.Entries) < 1 { | |||
log.Error(4, "LDAP Admin Search failed") | |||
} else { | |||
admin_attr = true | |||
isAdmin = true | |||
} | |||
} | |||
@@ -241,5 +241,5 @@ func (ls *Source) SearchEntry(name, passwd string, directBind bool) (string, str | |||
} | |||
} | |||
return username_attr, name_attr, sn_attr, mail_attr, admin_attr, true | |||
return username, firstname, surname, mail, isAdmin, true | |||
} |