This commit is contained in:
payacom
2026-10-01 21:12:05 +03:30
parent 806471241e
commit d4ebc20aa8
41 changed files with 1015 additions and 135 deletions

View File

@@ -0,0 +1,34 @@
/**
* این پسورد پایه‌ی رمزنگاری 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
}