aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-03-07 14:12:19 -0500
committerUnknwon <u@gogs.io>2017-03-07 14:12:19 -0500
commitbb005f3f9a606a5e94da4fc274d3c21234d98090 (patch)
tree72a9cada85df7387eb8a04c5ff18a46e907f3709 /models
parente6dbfd918c8d68c29c01bf2617321b037393ada1 (diff)
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.
Diffstat (limited to 'models')
-rw-r--r--models/user.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/models/user.go b/models/user.go
index 02c192d2..4ef4365a 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 {