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