diff options
Diffstat (limited to 'models/user.go')
-rw-r--r-- | models/user.go | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/models/user.go b/models/user.go index 55cffe1952..4b019d8d32 100644 --- a/models/user.go +++ b/models/user.go @@ -821,21 +821,26 @@ func ChangeUserName(u *User, newUserName string) (err error) { return os.Rename(UserPath(u.Name), UserPath(newUserName)) } +// checkDupEmail checks whether there are the same email with the user +func checkDupEmail(e Engine, u *User) error { + u.Email = strings.ToLower(u.Email) + has, err := e. + Where("id!=?", u.ID). + And("type=?", u.Type). + And("email=?", u.Email). + Get(new(User)) + if err != nil { + return err + } else if has { + return ErrEmailAlreadyUsed{u.Email} + } + return nil +} + func updateUser(e Engine, u *User) error { // Organization does not need email + u.Email = strings.ToLower(u.Email) if !u.IsOrganization() { - u.Email = strings.ToLower(u.Email) - has, err := e. - Where("id!=?", u.ID). - And("type=?", u.Type). - And("email=?", u.Email). - Get(new(User)) - if err != nil { - return err - } else if has { - return ErrEmailAlreadyUsed{u.Email} - } - if len(u.AvatarEmail) == 0 { u.AvatarEmail = u.Email } @@ -857,6 +862,16 @@ func UpdateUser(u *User) error { return updateUser(x, u) } +// UpdateUserSetting updates user's settings. +func UpdateUserSetting(u *User) error { + if !u.IsOrganization() { + if err := checkDupEmail(x, u); err != nil { + return err + } + } + return updateUser(x, u) +} + // deleteBeans deletes all given beans, beans should contain delete conditions. func deleteBeans(e Engine, beans ...interface{}) (err error) { for i := range beans { |