Проверка пароля с помощью Respect Validation - PullRequest
0 голосов
/ 24 января 2019

В настоящее время у меня установлено регулярное выражение для проверки моих паролей:

/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/

Проверяет наличие как минимум 1 заглавных и строчных букв, 1 цифры, 1 специального символа / несловесного символа и минимум 6 символов.

Теперь я переношу все свои правила проверки на Соблюдение проверки . У меня большая часть настроек настроена красиво, но возникают трудности с проверкой пароля.

Мне известен метод regex:

Validator::regex('/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/')->setName('Password');

Но это возвращает сообщение об ошибке, подобное этому:

Password must validate against "/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/"

Я хочу объединить методы, чтобы каждое правило устанавливалось в цепочке проверки. Поэтому, если вам не хватает цифры, она возвращает что-то вроде «Пароль должен содержать не менее 1 цифры», если вам не хватает прописного символа, возвращается «Пароль должен содержать не менее 1 символа верхнего регистра» и т. Д.

Я думал, что это можно сделать с помощью метода allOff, при котором вы можете установить отдельные правила, которые будут проходить глобально, если все внутренние правила пройдут.

В качестве теста я попытался определить, содержит ли строка цифру и буквенный символ, например:

Validator::allOf(Validator::digit(), Validator::alpha())->setName('Password');

Результаты:

$password = 'test'; // Password must contain only digits (0-9)
$password = '1234'; // Password must contain only letters (a-z)
$password = 'test1234' // Password must contain only digits (0-9)

Глядя на это сейчас, вполне понятно, почему я получил эти ошибки, но я не вижу, как еще это сделать без метода regex. Это то, что мне нужно после того, как это возможно, просто лучше использовать метод regex в этом случае, я просмотрел список правил несколько раз, но, вероятно, пропустил тот, который мне нужен, так как есть довольно немногие.

Любая помощь приветствуется.

...