调整接单密码强度规则
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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('排行榜打手名称仅展示首字符', () => {
|
||||
|
||||
@@ -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('密码需包含英文字母和数字')),
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input.Password placeholder="至少 6 位,包含大小写、数字和标点" />
|
||||
<Input.Password placeholder="至少 8 位,包含英文和数字" />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Modal>
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
Reference in New Issue
Block a user