diff --git a/apps/backend/src/services/worker-platform/mappers.ts b/apps/backend/src/services/worker-platform/mappers.ts
index 257fb1bb..f2efc799 100644
--- a/apps/backend/src/services/worker-platform/mappers.ts
+++ b/apps/backend/src/services/worker-platform/mappers.ts
@@ -1483,7 +1483,7 @@ export function validateWorkerUsername(username: string) {
export function validateWorkerPassword(password: string) {
if (!isWorkerPasswordStrong(password)) {
- throw createHttpError('接单密码至少 6 位,且必须包含大写字母、小写字母、数字和标点符号', {
+ throw createHttpError('接单密码至少 8 位,且必须包含英文字母和数字', {
statusCode: 400,
errorCode: 'worker_password_invalid',
})
@@ -1491,13 +1491,7 @@ export function validateWorkerPassword(password: string) {
}
export function isWorkerPasswordStrong(password: string): boolean {
- return (
- password.length >= 6 &&
- /[A-Z]/.test(password) &&
- /[a-z]/.test(password) &&
- /\d/.test(password) &&
- /[\p{P}\p{S}]/u.test(password)
- )
+ return password.length >= 8 && /[a-zA-Z]/.test(password) && /\d/.test(password)
}
export function normalizeSessionVersion(value: unknown): number {
diff --git a/apps/backend/src/services/worker-platform/worker-platform-service.test.ts b/apps/backend/src/services/worker-platform/worker-platform-service.test.ts
index fa2adbd3..4a3ae0c7 100644
--- a/apps/backend/src/services/worker-platform/worker-platform-service.test.ts
+++ b/apps/backend/src/services/worker-platform/worker-platform-service.test.ts
@@ -154,14 +154,14 @@ test('assertWorkerLoginAllowed allows active workers', () => {
assert.doesNotThrow(() => assertWorkerLoginAllowed(buildWorkerUserRow()))
})
-test('接单密码必须包含大小写字母、数字和标点符号', () => {
- assert.equal(isWorkerPasswordStrong('Aa1234!'), true)
- assert.equal(isWorkerPasswordStrong('aa1234!'), false)
- assert.equal(isWorkerPasswordStrong('AA1234!'), false)
- assert.equal(isWorkerPasswordStrong('Aaabcd!'), false)
- assert.equal(isWorkerPasswordStrong('Aa123456'), false)
- assert.equal(isWorkerPasswordStrong('Aa1!'), false)
- assert.throws(() => validateWorkerPassword('Aa123456'), { errorCode: 'worker_password_invalid' })
+test('接单密码至少八位且必须包含英文字母和数字', () => {
+ assert.equal(isWorkerPasswordStrong('abc12345'), true)
+ assert.equal(isWorkerPasswordStrong('ABC12345'), true)
+ assert.equal(isWorkerPasswordStrong('12345678'), false)
+ assert.equal(isWorkerPasswordStrong('abcdefgh'), false)
+ assert.equal(isWorkerPasswordStrong('abc1234'), false)
+ assert.doesNotThrow(() => validateWorkerPassword('abc12345'))
+ assert.throws(() => validateWorkerPassword('12345678'), { errorCode: 'worker_password_invalid' })
})
test('排行榜打手名称仅展示首字符', () => {
diff --git a/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx b/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx
index 8f14302c..c3c083c5 100644
--- a/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx
+++ b/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx
@@ -427,20 +427,16 @@ export default function WorkersPanel() {
name="password"
rules={[
{ required: true, message: '请输入新密码' },
- { min: 6, message: '密码至少 6 位' },
+ { min: 8, message: '密码至少 8 位' },
{
validator: (_, value) =>
- !value ||
- (/[A-Z]/.test(value) &&
- /[a-z]/.test(value) &&
- /\d/.test(value) &&
- /[\p{P}\p{S}]/u.test(value))
+ !value || (/[a-zA-Z]/.test(value) && /\d/.test(value))
? Promise.resolve()
- : Promise.reject(new Error('密码需包含大写字母、小写字母、数字和标点符号')),
+ : Promise.reject(new Error('密码需包含英文字母和数字')),
},
]}
>
-
+
diff --git a/apps/frontend/src/utils/worker-password.ts b/apps/frontend/src/utils/worker-password.ts
index 977adbff..f6415f20 100644
--- a/apps/frontend/src/utils/worker-password.ts
+++ b/apps/frontend/src/utils/worker-password.ts
@@ -1,15 +1,12 @@
-export const WORKER_PASSWORD_MIN_LENGTH = 6
+export const WORKER_PASSWORD_MIN_LENGTH = 8
-export const WORKER_PASSWORD_RULE_MESSAGE =
- '密码至少 6 位,且必须包含大写字母、小写字母、数字和标点符号'
+export const WORKER_PASSWORD_RULE_MESSAGE = '密码至少 8 位,且必须包含英文字母和数字'
export function isWorkerPasswordStrong(value: unknown): boolean {
const password = String(value || '')
return (
password.length >= WORKER_PASSWORD_MIN_LENGTH &&
- /[A-Z]/.test(password) &&
- /[a-z]/.test(password) &&
- /\d/.test(password) &&
- /[\p{P}\p{S}]/u.test(password)
+ /[a-zA-Z]/.test(password) &&
+ /\d/.test(password)
)
}
diff --git a/apps/frontend/tests/worker-password.test.ts b/apps/frontend/tests/worker-password.test.ts
new file mode 100644
index 00000000..078b8d17
--- /dev/null
+++ b/apps/frontend/tests/worker-password.test.ts
@@ -0,0 +1,12 @@
+import assert from 'node:assert/strict'
+import test from 'node:test'
+
+import { isWorkerPasswordStrong } from '../src/utils/worker-password.ts'
+
+test('接单密码至少八位且必须包含英文字母和数字', () => {
+ assert.equal(isWorkerPasswordStrong('abc12345'), true)
+ assert.equal(isWorkerPasswordStrong('ABC12345'), true)
+ assert.equal(isWorkerPasswordStrong('12345678'), false)
+ assert.equal(isWorkerPasswordStrong('abcdefgh'), false)
+ assert.equal(isWorkerPasswordStrong('abc1234'), false)
+})