From f841ef191319a91b773879a8c0549d425ee078bb Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Thu, 13 Aug 2026 08:51:35 +0800 Subject: [PATCH] feat: lower Sense password minimum to six characters (#40) --- Sense/server/app/sense/identity/password.go | 4 +- .../app/sense/identity/password_test.go | 37 +++++++++++++++++++ Sense/ui/src/views/sense/identity/Users.vue | 5 +-- 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 Sense/server/app/sense/identity/password_test.go diff --git a/Sense/server/app/sense/identity/password.go b/Sense/server/app/sense/identity/password.go index 578e336..d8bfe44 100644 --- a/Sense/server/app/sense/identity/password.go +++ b/Sense/server/app/sense/identity/password.go @@ -9,8 +9,8 @@ import ( ) func ValidatePassword(username, password string) error { - if len([]rune(password)) < 12 { - return fmt.Errorf("密码至少需要 12 个字符") + if len([]rune(password)) < 6 { + return fmt.Errorf("密码至少需要 6 个字符") } var upper, lower, digit bool for _, value := range password { diff --git a/Sense/server/app/sense/identity/password_test.go b/Sense/server/app/sense/identity/password_test.go new file mode 100644 index 0000000..a090d10 --- /dev/null +++ b/Sense/server/app/sense/identity/password_test.go @@ -0,0 +1,37 @@ +package identity + +import ( + "strings" + "testing" +) + +func TestValidatePasswordLengthAndComplexity(t *testing.T) { + tests := []struct { + name string + username string + password string + want string + }{ + {name: "six characters", username: "operator", password: "Abc123"}, + {name: "five characters", username: "operator", password: "Ab123", want: "至少需要 6 个字符"}, + {name: "missing uppercase", username: "operator", password: "abc123", want: "大写字母、小写字母和数字"}, + {name: "missing lowercase", username: "operator", password: "ABC123", want: "大写字母、小写字母和数字"}, + {name: "missing digit", username: "operator", password: "Abcdef", want: "大写字母、小写字母和数字"}, + {name: "contains username", username: "admin", password: "MyAdmin1", want: "不能包含用户名"}, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + err := ValidatePassword(test.username, test.password) + if test.want == "" { + if err != nil { + t.Fatalf("ValidatePassword() error = %v", err) + } + return + } + if err == nil || !strings.Contains(err.Error(), test.want) { + t.Fatalf("ValidatePassword() error = %v, want substring %q", err, test.want) + } + }) + } +} diff --git a/Sense/ui/src/views/sense/identity/Users.vue b/Sense/ui/src/views/sense/identity/Users.vue index 88c4145..139f660 100644 --- a/Sense/ui/src/views/sense/identity/Users.vue +++ b/Sense/ui/src/views/sense/identity/Users.vue @@ -30,7 +30,7 @@ -
至少 12 位,包含大小写字母和数字,且不含用户名。
+
至少 6 位,包含大小写字母和数字,且不含用户名。
@@ -64,7 +64,7 @@ const rules = { username: [{ required: true, message: '请输入用户名', trigger: 'blur' }], display_name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], role: [{ required: true, message: '请选择角色', trigger: 'change' }], - password: [{ required: true, min: 12, message: '请输入至少 12 位初始密码', trigger: 'blur' }] + password: [{ required: true, min: 6, message: '请输入至少 6 位初始密码', trigger: 'blur' }] } const canWrite = computed(() => store.getters['sense-identity/hasPermission']?.('identity.users.write')) const filteredUsers = computed(() => { @@ -99,4 +99,3 @@ onMounted(load) -