From bb005f3f9a606a5e94da4fc274d3c21234d98090 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Tue, 7 Mar 2017 14:12:19 -0500 Subject: [PATCH] models/user: better directory handling when change username Previously, if the user base directory somehow doesn't exist, the application throws 500 for failure of rename. Now it detects if the application should rename or just create a new directory. --- models/user.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/models/user.go b/models/user.go index 02c192d21..4ef4365a6 100644 --- a/models/user.go +++ b/models/user.go @@ -682,7 +682,13 @@ func ChangeUserName(u *User, newUserName string) (err error) { return fmt.Errorf("Delete repository wiki local copy: %v", err) } - return os.Rename(UserPath(u.Name), UserPath(newUserName)) + // Rename or create user base directory + baseDir := UserPath(u.Name) + newBaseDir := UserPath(newUserName) + if com.IsExist(baseDir) { + return os.Rename(baseDir, newBaseDir) + } + return os.MkdirAll(newBaseDir, os.ModePerm) } func updateUser(e Engine, u *User) error {