summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-11-30 18:29:16 -0500
committerUnknwon <joe2010xtmf@163.com>2014-11-30 18:29:16 -0500
commit533880860069ca95fba44732721fef3434e1ec99 (patch)
tree31b69d9b64d76295df8beb6ec0966b963f378da4
parent82da024a4df2a626633a49f70dd3a2889b525d15 (diff)
downloadgitea-533880860069ca95fba44732721fef3434e1ec99.tar.gz
gitea-533880860069ca95fba44732721fef3434e1ec99.zip
fix #676
-rw-r--r--models/user.go9
-rw-r--r--routers/admin/users.go12
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"))
}