]> source.dussan.org Git - gitea.git/commitdiff
fix #676
authorUnknwon <joe2010xtmf@163.com>
Sun, 30 Nov 2014 23:29:16 +0000 (18:29 -0500)
committerUnknwon <joe2010xtmf@163.com>
Sun, 30 Nov 2014 23:29:16 +0000 (18:29 -0500)
models/user.go
routers/admin/users.go

index 61a43ba9bf7e5cb7188d9360c56480b3f7c672fa..5c6101e62ca1eb1d08bb06e4ffbe13639acd60bf 100644 (file)
@@ -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
 }
 
index 0a1056f3bd187e0846cd091edcd48e446778394f..2bbf13b92d6002688a033d9349bc1a80fbae0291 100644 (file)
@@ -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"))
 }