35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
/**
|
|
* این پسورد پایهی رمزنگاری E2EE هم هست (کلید با آن wrap میشود)، برای همین
|
|
* قانون قویتری از پسورد معمولیِ ثبتنام/تغییر رمز (که فقط حرف+عدد میخواهد) دارد.
|
|
*/
|
|
const STRONG_PASSWORD_MIN_LENGTH = 8
|
|
const STRONG_PASSWORD_MAX_LENGTH = 64
|
|
const STRONG_PASSWORD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,64}$/
|
|
|
|
const validateStrongPassword = (password) => {
|
|
if (!password || typeof password !== 'string') {
|
|
return 'رمز عبور الزامی است'
|
|
}
|
|
|
|
if (password.length < STRONG_PASSWORD_MIN_LENGTH) {
|
|
return `رمز عبور باید حداقل ${STRONG_PASSWORD_MIN_LENGTH} کاراکتر باشد`
|
|
}
|
|
|
|
if (password.length > STRONG_PASSWORD_MAX_LENGTH) {
|
|
return `رمز عبور نمیتواند بیشتر از ${STRONG_PASSWORD_MAX_LENGTH} کاراکتر باشد`
|
|
}
|
|
|
|
if (!STRONG_PASSWORD_REGEX.test(password)) {
|
|
return 'رمز عبور باید شامل حروف بزرگ، حروف کوچک، عدد و یک کاراکتر خاص باشد'
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
module.exports = {
|
|
STRONG_PASSWORD_REGEX,
|
|
STRONG_PASSWORD_MIN_LENGTH,
|
|
STRONG_PASSWORD_MAX_LENGTH,
|
|
validateStrongPassword
|
|
}
|