diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-11-30 18:29:16 -0500 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-11-30 18:29:16 -0500 |
commit | 533880860069ca95fba44732721fef3434e1ec99 (patch) | |
tree | 31b69d9b64d76295df8beb6ec0966b963f378da4 | |
parent | 82da024a4df2a626633a49f70dd3a2889b525d15 (diff) | |
download | gitea-533880860069ca95fba44732721fef3434e1ec99.tar.gz gitea-533880860069ca95fba44732721fef3434e1ec99.zip |
fix #676
-rw-r--r-- | models/user.go | 9 | ||||
-rw-r--r-- | routers/admin/users.go | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/models/user.go b/models/user.go index 61a43ba9bf..5c6101e62c 100644 --- a/models/user.go +++ b/models/user.go @@ -417,6 +417,13 @@ func ChangeUserName(u *User, newUserName string) (err error) { // UpdateUser updates user's information. func UpdateUser(u *User) error { + has, err := x.Where("id != ?", u.Id).And("email = ?", u.Email).Get(new(User)) + if err != nil { + return err + } else if has { + return ErrEmailAlreadyUsed + } + u.LowerName = strings.ToLower(u.Name) if len(u.Location) > 255 { @@ -429,7 +436,7 @@ func UpdateUser(u *User) error { u.Description = u.Description[:255] } - _, err := x.Id(u.Id).AllCols().Update(u) + _, err = x.Id(u.Id).AllCols().Update(u) return err } diff --git a/routers/admin/users.go b/routers/admin/users.go index 0a1056f3bd..2bbf13b92d 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -192,13 +192,19 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { u.IsActive = form.Active u.IsAdmin = form.Admin u.AllowGitHook = form.AllowGitHook + + ctx.Data["User"] = u + if err := models.UpdateUser(u); err != nil { - ctx.Handle(500, "UpdateUser", err) + if err == models.ErrEmailAlreadyUsed { + ctx.Data["Err_Email"] = true + ctx.RenderWithErr(ctx.Tr("form.email_been_used"), USER_EDIT, &form) + } else { + ctx.Handle(500, "UpdateUser", err) + } return } log.Trace("Account profile updated by admin(%s): %s", ctx.User.Name, u.Name) - - ctx.Data["User"] = u ctx.Flash.Success(ctx.Tr("admin.users.update_profile_success")) ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) } |