В процессе добавления галочек "Пользовательского соглашения..." во все формы на сайте, столкнулся с некоторой особенностью формы восстановления пароля.
Учитывая неопределённость законодательства, решил добавить галочку и в эту форму, поскольку пользователь отправляет в ней свой e-mail, а в данном проекте ещё и телефон.
Особенность заключалась в том, что даже переместив компонент system.auth.forgotpasswd в свой неймспейс добраться до самой отправки письма с контрольной строчкой нельзя. В компоненте этого ничего нет.
Соответственно и запретить отправку данных, если в форме не отмечена галочка компонент тоже никак не позволяет.
Решением было сделать свой обработчик на событие OnBeforeUserSendPassword - он вызывается как раз перед отправкой письма восстановления
Далее в нём достаточно проверить, передана ли галочка и вызвать исключение, если не передана с соответствующим сообщением.
Примерный код обработчика:
Учитывая неопределённость законодательства, решил добавить галочку и в эту форму, поскольку пользователь отправляет в ней свой e-mail, а в данном проекте ещё и телефон.
Особенность заключалась в том, что даже переместив компонент system.auth.forgotpasswd в свой неймспейс добраться до самой отправки письма с контрольной строчкой нельзя. В компоненте этого ничего нет.
Соответственно и запретить отправку данных, если в форме не отмечена галочка компонент тоже никак не позволяет.
Решением было сделать свой обработчик на событие OnBeforeUserSendPassword - он вызывается как раз перед отправкой письма восстановления
Далее в нём достаточно проверить, передана ли галочка и вызвать исключение, если не передана с соответствующим сообщением.
Примерный код обработчика:
function OnBeforeUserSendPassword(&$arFields) { //Проверяем, установлена ли галочка на чекбоксе согласия if ((!isset($_POST["accept_agreement"])) || ($_POST["accept_agreement"] != 1)) { global $APPLICATION; $APPLICATION->throwException("Подтвердите согласие с \"Пользовательским соглашением об обработке персональных данных\""); return false; } } |