Skip to content

Commit 3524d0c

Browse files
committed
fix redirect url & return error if non local acount
1 parent e93e3ec commit 3524d0c

File tree

3 files changed

+12
-14
lines changed

3 files changed

+12
-14
lines changed

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ password_not_match = The passwords do not match.
359359
lang_select_error = Select a language from the list.
360360
361361
username_been_taken = The username is already taken.
362+
username_change_not_local_user = Non-local users are not allowed to change their username.
362363
repo_name_been_taken = The repository name is already used.
363364
repository_files_already_exist = Files already exist for this repository. Contact the system administrator.
364365
repository_files_already_exist.adopt = Files already exist for this repository and can only be Adopted.

routers/admin/users.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,9 @@ func EditUserPost(ctx *context.Context, form auth.AdminEditUserForm) {
260260
u.HashPassword(form.Password)
261261
}
262262

263-
if len(form.UserName) > 0 && u.Name != form.UserName {
264-
router_user_setting.HandleUsernameChange(ctx, u, form.UserName)
265-
if ctx.Written() {
263+
if len(form.UserName) != 0 && u.Name != form.UserName {
264+
if err := router_user_setting.HandleUsernameChange(ctx, u, form.UserName); err != nil {
265+
ctx.Redirect(setting.AppSubURL + "/admin/users")
266266
return
267267
}
268268
u.Name = form.UserName

routers/user/setting/profile.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ func Profile(ctx *context.Context) {
3939
}
4040

4141
// HandleUsernameChange handle username changes from user settings and admin interface
42-
func HandleUsernameChange(ctx *context.Context, user *models.User, newName string) {
42+
func HandleUsernameChange(ctx *context.Context, user *models.User, newName string) error {
4343
// Non-local users are not allowed to change their username.
44-
if len(newName) == 0 || !user.IsLocal() {
45-
return
44+
if !user.IsLocal() {
45+
ctx.Flash.Error(ctx.Tr("form.username_change_not_local_user"))
46+
return fmt.Errorf(ctx.Tr("form.username_change_not_local_user"))
4647
}
4748

4849
// Check if user name has been changed
@@ -51,26 +52,22 @@ func HandleUsernameChange(ctx *context.Context, user *models.User, newName strin
5152
switch {
5253
case models.IsErrUserAlreadyExist(err):
5354
ctx.Flash.Error(ctx.Tr("form.username_been_taken"))
54-
ctx.Redirect(setting.AppSubURL + "/user/settings")
5555
case models.IsErrEmailAlreadyUsed(err):
5656
ctx.Flash.Error(ctx.Tr("form.email_been_used"))
57-
ctx.Redirect(setting.AppSubURL + "/user/settings")
5857
case models.IsErrNameReserved(err):
5958
ctx.Flash.Error(ctx.Tr("user.form.name_reserved", newName))
60-
ctx.Redirect(setting.AppSubURL + "/user/settings")
6159
case models.IsErrNamePatternNotAllowed(err):
6260
ctx.Flash.Error(ctx.Tr("user.form.name_pattern_not_allowed", newName))
63-
ctx.Redirect(setting.AppSubURL + "/user/settings")
6461
case models.IsErrNameCharsNotAllowed(err):
6562
ctx.Flash.Error(ctx.Tr("user.form.name_chars_not_allowed", newName))
66-
ctx.Redirect(setting.AppSubURL + "/user/settings")
6763
default:
6864
ctx.ServerError("ChangeUserName", err)
6965
}
70-
return
66+
return err
7167
}
7268
log.Trace("User name changed: %s -> %s", user.Name, newName)
7369
}
70+
return nil
7471
}
7572

7673
// ProfilePost response for change user's profile
@@ -84,8 +81,8 @@ func ProfilePost(ctx *context.Context, form auth.UpdateProfileForm) {
8481
}
8582

8683
if len(form.Name) != 0 && ctx.User.Name != form.Name {
87-
HandleUsernameChange(ctx, ctx.User, form.Name)
88-
if ctx.Written() {
84+
if err := HandleUsernameChange(ctx, ctx.User, form.Name); err != nil {
85+
ctx.Redirect(setting.AppSubURL + "/user/settings")
8986
return
9087
}
9188
ctx.User.Name = form.Name

0 commit comments

Comments
 (0)