Closed dalapenko closed 1 week ago
Привет! Мы используем android.util как решение, которое покрывает больше реальных кейсов — да, по спецификации символы могут быть, но подавляющее большинство сервисов не даст создать почты с такими символами. Например, почта из вашего примера корректна по спецификации, но не может существовать в жизни, потому что Gmail разрешает только латинские буквы, цифры и точки:
Аналогично для Yandex.ID, Mail.ru, Outlook, и т.д.
Также такой подход снижает риск ошибки ввода пользователем, а также XSS или SQL-инъекций.
На данный момент у нас нет в планах перейти на другой валидатор, но, может быть, рассмотрим это в будущем
У конфигурации чата обязательная валидация полей. Для валидации email используется pattern из android.util который не поддерживает RFC5321
Например email: dmitriilapenko1&2$3#@gmail.com вполне себе валидный, но пользователь получит
java.lang.RuntimeException - Invalid chat configuration: Validation(validUrlChat=true, validUrlOfflineForm=true, validCompanyId=true, validChannelId=true, validClientToken=true, validClientEmail=false, validClientPhoneNumber=true)
Как решение, использовать вместо или дополнительно библиотеку Apache Common Validator, который покрывает сильно больше кейсов, включая описанный. Так же можно использовать для валидации свой паттерн, но вариация email вещь не самая благодарная и у неё множество корнер кейсов. Если технически ограничения вашей системы позволяют, как вариант решения это опциональное отключение валидаций на уровне SDK или более гибкие настройки.