Павел
И если ты ради этого устроил сыр бор - это отдельный вопрос...
Кирилл
Да если тебе не хватает встроенных констрейнтов - пиши кастомные валидаторы, ну блин
Павел
The Ant
Тут вообще должна быть ошибка {'auth'; 'auth error'} и к валидатору отношения не имеет, ни к логину, ни к паролю.
На бек прилетает пара с логином и паролем, ответ содержит ошибку. Все просто же
Павел
Хотя тут и кей не нужен
The Ant
И это самый простой пример
Павел
И это самый простой пример
Этот пример вообще не относится к вопросу/пролеме, так как это не ошибка первичной валидации.
The Ant
Этот пример вообще не относится к вопросу/пролеме, так как это не ошибка первичной валидации.
Причем тут первичная или нет? Я про первичную вообще ничего не говорил
Павел
Причем тут первичная или нет? Я про первичную вообще ничего не говорил
Потому что валидатор, и то что ты пытаешься сделать - это первичная валидация. А потом приводишь пример про аутентификацию, и говоришь что надо объединить что-то и обработать симфони валидатор
The Ant
Я вообще не разделяю первичную не первичную.
Павел
Я вообще не разделяю первичную не первичную.
В этом и проблема наверное кроется
The Ant
Надо проверить правильный ли логин пароль - взял и проверил, потом юзера авторизовал
Павел
У тебя есть ошибки валидации, а есть ошибки логики, проверки логики.
The Ant
Нету, щас наговоришь
Павел
Надо проверить правильный ли логин пароль - взял и проверил, потом юзера авторизовал
Проверка логина/пароля никак не относитя к симфони валидатору и объединению. Не понял вообще к чему этот пример
The Ant
Да с чего ты решил то? По твоему валидатор в базу сходить не может?
Павел
Точнее может, но это уже не первичная
The Ant
Или доку почитай хотябы. Может.
Павел
Или доку почитай хотябы. Может.
Так мы продоку симфони или архитектуру?
Павел
может, как и запретить доступ
Ну я бы сказал что это не очень
Иван
валидатор - это название компонента он может чекать авторизацию
Павел
Это удобно но как то смазывается
Konstantin
Да с чего ты решил то? По твоему валидатор в базу сходить не может?
не ну это уже перебор, пацаны. не только может, но и имеет полное право. банальный пример - уник валидатор
Konstantin
как ты его сделаешь, не сходив в базу?
Павел
как ты его сделаешь, не сходив в базу?
Уник валидтор просрет в рейс кондишене)))
Konstantin
валидатор - это далеко не только "проверить на регулярку" или "чтобы количество символов было не меньше и не больше"
Konstantin
Павел
это смотря как его делать
И как можно сделать, чтобы не просрать?
Konstantin
блокировку написать?
Konstantin
завести семафор, что вот, мол, с таким-то ключом записи не допускать
Konstantin
как конкретно - вариантов довольно много, ограничены фантазией
Павел
блокировку написать?
Т.е. мы идем в валидтор, делаем лок селект фор апдейт, потом делаем логику на 5 сек и нас все жлут 5 сек?
Иван
если валидатор вызывается в миддлваре, то вообще не видно, что авторизацию чекнет класс, у которого в неймспейсе что-то про валидацию
Павел
Технически в валидатор (констрейнт) ДТО хоть регистрацию можно запихать, но это скрыто, я за максимальную прозрачность.
Иван
Технически в валидатор (констрейнт) ДТО хоть регистрацию можно запихать, но это скрыто, я за максимальную прозрачность.
не, регистрация - это действие вот что точно не стоит запихивать туда, так это действие
The Ant
Совершенно верно
Ну вот смотри. Юзер отправляет логин пароль. Далее, если такой юзер существует и пароль ему соответствует выдаётся токен. Через специальный объект. Задачи проверять пару у выписывателя токена нету. Его задача выдать токен и все. Какую альтернативу предложишь в этой схеме?
Иван
но в принципе можно в атрибут правило для лока прописать
Павел
не, регистрация - это действие вот что точно не стоит запихивать туда, так это действие
Сходить в бд - тоже некое действие. Ну короче топить не буду, но мне не нравится пихать в валидацию работу с базой.
Konstantin
Т.е. мы идем в валидтор, делаем лок селект фор апдейт, потом делаем логику на 5 сек и нас все жлут 5 сек?
не все, а только по этому ключу. то есть тот, кто пишет в эту таблицу, теперь тоже проверяет этот лок. выглядит мутновато, да, но если логика того требует, куда деваться-то? не все системы позволяют иметь несколько записей с одним ключом и ждать какого-то компакшна (какая-нибудь транзакция, например). но тебе об этом надо сообщить в форме/апишке, где там у тебя валидатор
Павел
а сходить в конфиг? действие - это действие
Зачем идти в конфиг? Короче я за то, что первичная валидация - это минимум.
Павел
Остальное - уже ближе к логике идет
Konstantin
можно сколько угодно теоретизировать про "должен/не должен", но честно говоря твои аргументы слабоваты. валидаторы имеют полное право обращаться в внешним источникам. у меня вон есть валидаторы в компании (мы работаем на рынке приватности твоих данных), которые проверяют при регистрации, не юзаешь ли ты скомпрометированный пароль, делая запрос к haveibeenpwned.com
Konstantin
не особо понятно кто, если не валидатор, должен сказать "нет, бро, 123456 пароль не лучший, давай другой"
Иван
если у корпоративного клиента при заказе надо проверять кучу ограничений, это валидация
Konstantin
^ сходив в пять баз и справочников
Павел
Konstantin
нет никакой первичной и вторичной валидации
Konstantin
то, что ты называешь "первичная" (кстати, кажется, это ты сам придумал) - это жс тебе в браузере делает, ну по масочке там проверить, по регулярочке
Иван
валидация но не первичная, это скорее набор бизнес рулов
тогда первичная валидация - это просто json распаковывается
Иван
проверка синтаксиса емейла ничем не отличается от проверки лимита на время поездки
Иван
хотя конечно отличается немного
Konstantin
ну вот не очень понятно, почему один валидатор может подчеркнуть красным "инн невалиден" (потому что там цифр мало), а другой (который в базу сходит и проверит, что нет такого инна в налоговой) - уже нет. где между ними разница
Павел
Ладно, ок. В чем разница между проверкой одного конфига, справочника, или например 10, которые асинхронные, возможно под сагой и потом конпенсаций? Где у вас грань между валидацией и безнес рулом?
Konstantin
поэтому, всё это херня, первичный, вторичный. есть задача валидации, есть всякие способы делать композабл правила, группы и прочее. от этого надо отталкиваться, а не вводить странные ограничения "валидатор не может в базу!!11"
Иван
поэтому бизнесрул - это вообще хз что
Павел
поэтому бизнесрул - это вообще хз что
Т.е. любая проверка - это валидация?
Павел
То что баланс не может быть меньше 0, но если есть кредитный лимит то все же может ? Это тоже валидация?
Konstantin
не забывай, что валидация - это первый шаг бизнес-логики по пути следования ввода пользователя (формы, запроса)
Иван
типа при деактивации пользователя снимать с публикации его материалы - точно бизнесрул а инн проверить у налоговой скорее валидация
Кирилл
ну вот не очень понятно, почему один валидатор может подчеркнуть красным "инн невалиден" (потому что там цифр мало), а другой (который в базу сходит и проверит, что нет такого инна в налоговой) - уже нет. где между ними разница
а некоторые реализуют валидаторы так, что возвращается толь первая ошибка. Заполнены 5 полей, все некорректно - ошибка по первому полю. Юзер исправляет. Ошибка по второму полю. И т.д.
Кирилл
За такое убивать можно
Konstantin
тебе надо это в формочке отобразить
Konstantin
"вы не можете юзать этот инн, у вас тут задолженность и делопроизводство"