diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-12-03 01:11:22 +0800 |
---|---|---|
committer | Lauris BH <lauris@nix.lv> | 2017-12-02 19:11:22 +0200 |
commit | b3d5ba6f9013052dfe51fb03ce3e2088d7da3be5 (patch) | |
tree | 34cd44d43157a054844b343075c4a5744cc0f7c5 /routers | |
parent | 35cc5b0402d46d672e02bbe1ad15d1460077e8f4 (diff) | |
download | gitea-b3d5ba6f9013052dfe51fb03ce3e2088d7da3be5.tar.gz gitea-b3d5ba6f9013052dfe51fb03ce3e2088d7da3be5.zip |
Fix missing password length check when change password (#3039)
* fix missing password length check when change password
* add tests for change password
Diffstat (limited to 'routers')
-rw-r--r-- | routers/user/setting.go | 4 | ||||
-rw-r--r-- | routers/user/setting_test.go | 68 |
2 files changed, 71 insertions, 1 deletions
diff --git a/routers/user/setting.go b/routers/user/setting.go index bd2c923b70..a2f32e3e19 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -222,7 +222,9 @@ func SettingsSecurityPost(ctx *context.Context, form auth.ChangePasswordForm) { return } - if ctx.User.IsPasswordSet() && !ctx.User.ValidatePassword(form.OldPassword) { + if len(form.Password) < setting.MinPasswordLength { + ctx.Flash.Error(ctx.Tr("auth.password_too_short", setting.MinPasswordLength)) + } else if ctx.User.IsPasswordSet() && !ctx.User.ValidatePassword(form.OldPassword) { ctx.Flash.Error(ctx.Tr("settings.password_incorrect")) } else if form.Password != form.Retype { ctx.Flash.Error(ctx.Tr("form.password_not_match")) diff --git a/routers/user/setting_test.go b/routers/user/setting_test.go new file mode 100644 index 0000000000..72b1b83143 --- /dev/null +++ b/routers/user/setting_test.go @@ -0,0 +1,68 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package user + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/auth" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/test" + + "github.com/stretchr/testify/assert" +) + +func TestChangePassword(t *testing.T) { + oldPassword := "password" + setting.MinPasswordLength = 6 + + for _, req := range []struct { + OldPassword string + NewPassword string + Retype string + Message string + }{ + { + OldPassword: oldPassword, + NewPassword: "123456", + Retype: "123456", + Message: "", + }, + { + OldPassword: oldPassword, + NewPassword: "12345", + Retype: "12345", + Message: "auth.password_too_short", + }, + { + OldPassword: "12334", + NewPassword: "123456", + Retype: "123456", + Message: "settings.password_incorrect", + }, + { + OldPassword: oldPassword, + NewPassword: "123456", + Retype: "12345", + Message: "form.password_not_match", + }, + } { + models.PrepareTestEnv(t) + ctx := test.MockContext(t, "user/settings/security") + test.LoadUser(t, ctx, 2) + test.LoadRepo(t, ctx, 1) + + SettingsSecurityPost(ctx, auth.ChangePasswordForm{ + OldPassword: req.OldPassword, + Password: req.NewPassword, + Retype: req.Retype, + }) + + assert.EqualValues(t, req.Message, ctx.Flash.ErrorMsg) + assert.EqualValues(t, http.StatusFound, ctx.Resp.Status()) + } +} |