Skip to content

fixed bug #151 caused Find should be Get #153

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 11, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions models/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ func (err ErrUserAlreadyExist) Error() string {
}

type ErrUserNotExist struct {
UID int64
Name string
UID int64
Name string
KeyID int64
}

func IsErrUserNotExist(err error) bool {
Expand All @@ -65,7 +66,7 @@ func IsErrUserNotExist(err error) bool {
}

func (err ErrUserNotExist) Error() string {
return fmt.Sprintf("user does not exist [uid: %d, name: %s]", err.UID, err.Name)
return fmt.Sprintf("user does not exist [uid: %d, name: %s, keyid: %d]", err.UID, err.Name, err.KeyID)
}

type ErrEmailAlreadyUsed struct {
Expand Down
14 changes: 7 additions & 7 deletions models/login_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ func LoginViaLDAP(user *User, login, passowrd string, source *LoginSource, autoR
username, fn, sn, mail, isAdmin, succeed := source.Cfg.(*LDAPConfig).SearchEntry(login, passowrd, source.Type == LoginDLDAP)
if !succeed {
// User not in LDAP, do nothing
return nil, ErrUserNotExist{0, login}
return nil, ErrUserNotExist{0, login, 0}
}

if !autoRegister {
Expand Down Expand Up @@ -404,9 +404,9 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
if len(cfg.AllowedDomains) > 0 {
idx := strings.Index(login, "@")
if idx == -1 {
return nil, ErrUserNotExist{0, login}
return nil, ErrUserNotExist{0, login, 0}
} else if !com.IsSliceContainsStr(strings.Split(cfg.AllowedDomains, ","), login[idx+1:]) {
return nil, ErrUserNotExist{0, login}
return nil, ErrUserNotExist{0, login, 0}
}
}

Expand All @@ -425,7 +425,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
tperr, ok := err.(*textproto.Error)
if (ok && tperr.Code == 535) ||
strings.Contains(err.Error(), "Username and Password not accepted") {
return nil, ErrUserNotExist{0, login}
return nil, ErrUserNotExist{0, login, 0}
}
return nil, err
}
Expand Down Expand Up @@ -465,7 +465,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
func LoginViaPAM(user *User, login, password string, sourceID int64, cfg *PAMConfig, autoRegister bool) (*User, error) {
if err := pam.PAMAuth(cfg.ServiceName, login, password); err != nil {
if strings.Contains(err.Error(), "Authentication failure") {
return nil, ErrUserNotExist{0, login}
return nil, ErrUserNotExist{0, login, 0}
}
return nil, err
}
Expand Down Expand Up @@ -525,7 +525,7 @@ func UserSignIn(username, passowrd string) (*User, error) {
return user, nil
}

return nil, ErrUserNotExist{user.ID, user.Name}
return nil, ErrUserNotExist{user.ID, user.Name, 0}

default:
var source LoginSource
Expand Down Expand Up @@ -554,5 +554,5 @@ func UserSignIn(username, passowrd string) (*User, error) {
log.Warn("Failed to login '%s' via '%s': %v", username, source.Name, err)
}

return nil, ErrUserNotExist{user.ID, user.Name}
return nil, ErrUserNotExist{user.ID, user.Name, 0}
}
27 changes: 17 additions & 10 deletions models/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -890,12 +890,19 @@ func UserPath(userName string) string {
return filepath.Join(setting.RepoRootPath, strings.ToLower(userName))
}

// GetUserByKeyID get user information by user's public key id
func GetUserByKeyID(keyID int64) (*User, error) {
user := new(User)
return user, x.
Join("INNER", "public_key", "`public_key`.owner_id = `user`.id").
var user User
has, err := x.Join("INNER", "public_key", "`public_key`.owner_id = `user`.id").
Where("`public_key`.id=?", keyID).
Find(user)
Get(user)
if err != nil {
return nil, err
}
if !has {
return nil, ErrUserNotExist{0, "", keyID}
}
return &user, nil
}

func getUserByID(e Engine, id int64) (*User, error) {
Expand All @@ -904,7 +911,7 @@ func getUserByID(e Engine, id int64) (*User, error) {
if err != nil {
return nil, err
} else if !has {
return nil, ErrUserNotExist{id, ""}
return nil, ErrUserNotExist{id, "", 0}
}
return u, nil
}
Expand All @@ -920,22 +927,22 @@ func GetAssigneeByID(repo *Repository, userID int64) (*User, error) {
if err != nil {
return nil, err
} else if !has {
return nil, ErrUserNotExist{userID, ""}
return nil, ErrUserNotExist{userID, "", 0}
}
return GetUserByID(userID)
}

// GetUserByName returns user by given name.
func GetUserByName(name string) (*User, error) {
if len(name) == 0 {
return nil, ErrUserNotExist{0, name}
return nil, ErrUserNotExist{0, name, 0}
}
u := &User{LowerName: strings.ToLower(name)}
has, err := x.Get(u)
if err != nil {
return nil, err
} else if !has {
return nil, ErrUserNotExist{0, name}
return nil, ErrUserNotExist{0, name, 0}
}
return u, nil
}
Expand Down Expand Up @@ -1021,7 +1028,7 @@ func ValidateCommitsWithEmails(oldCommits *list.List) *list.List {
// GetUserByEmail returns the user object by given e-mail if exists.
func GetUserByEmail(email string) (*User, error) {
if len(email) == 0 {
return nil, ErrUserNotExist{0, "email"}
return nil, ErrUserNotExist{0, email, 0}
}

email = strings.ToLower(email)
Expand All @@ -1045,7 +1052,7 @@ func GetUserByEmail(email string) (*User, error) {
return GetUserByID(emailAddress.UID)
}

return nil, ErrUserNotExist{0, email}
return nil, ErrUserNotExist{0, email, 0}
}

type SearchUserOptions struct {
Expand Down
2 changes: 1 addition & 1 deletion models/user_mail.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ func MakeEmailPrimary(email *EmailAddress) error {
if err != nil {
return err
} else if !has {
return ErrUserNotExist{email.UID, ""}
return ErrUserNotExist{email.UID, "", 0}
}

// Make sure the former primary email doesn't disappear.
Expand Down