From 06d9d9e40794db9cbb00cdc893dea86d694389ad Mon Sep 17 00:00:00 2001
From: yp05327 <576951401@qq.com>
Date: Fri, 31 Mar 2023 02:27:00 +0900
Subject: [PATCH] Fix incorrect/Improve error handle in edit user page (#23805)

Changes:
- `RenderWithErr` should render `tplUserEdit` not `tplUserNew` in edit
page
- If error occurred in `HandleUsernameChange` redirect to original edit
page instead of user list page
---
 routers/web/admin/users.go | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go
index 5fb2a3e5d6..531f14d086 100644
--- a/routers/web/admin/users.go
+++ b/routers/web/admin/users.go
@@ -316,13 +316,13 @@ func EditUserPost(ctx *context.Context) {
 				log.Error(err.Error())
 				errMsg = ctx.Tr("auth.password_pwned_err")
 			}
-			ctx.RenderWithErr(errMsg, tplUserNew, &form)
+			ctx.RenderWithErr(errMsg, tplUserEdit, &form)
 			return
 		}
 
 		if err := user_model.ValidateEmail(form.Email); err != nil {
 			ctx.Data["Err_Email"] = true
-			ctx.RenderWithErr(ctx.Tr("form.email_error"), tplUserNew, &form)
+			ctx.RenderWithErr(ctx.Tr("form.email_error"), tplUserEdit, &form)
 			return
 		}
 
@@ -338,7 +338,10 @@ func EditUserPost(ctx *context.Context) {
 
 	if len(form.UserName) != 0 && u.Name != form.UserName {
 		if err := user_setting.HandleUsernameChange(ctx, u, form.UserName); err != nil {
-			ctx.Redirect(setting.AppSubURL + "/admin/users")
+			if ctx.Written() {
+				return
+			}
+			ctx.RenderWithErr(ctx.Flash.ErrorMsg, tplUserEdit, &form)
 			return
 		}
 		u.Name = form.UserName