Формы, персональные данные и закон ФЗ-152

Дата : 2 Июль, 2017
Опубликовал bi3ks
1 Star2 Stars3 Stars4 Stars5 Stars (1 проголосовало, оценка: 5,00 из 5)
Загрузка...
Теги : новости

Добрый день, коллеги!

С 1 июля 2017 года существенно ужесточена административная ответственность за нарушения при взаимодействии с персональными данными физических лиц.

Поправки касаются, в том числе, разработчиков, чьи компоненты собирают персональные данные о посетителях.

Каждая форма, которая собирает, к примеру, имя, фамилию, email или телефон, должна запрашивать согласие пользователя на обработку персональных данных.

create.pngМы в обновлении главного модуля 17.0.9 выпустили набор инструментов, который поможет вам соответствовать закону ФЗ-152 о персональных данных.

Начну с того, что в административном разделе в меню появился новый пункт:

Настройки -> Настройки продукта -> Соглашения

В нем вы можете создать новое соглашение для запроса согласия на обработку персональных данных, используя стандартный текст, который мы также включили в обновление.

Мы рассмотрим как включить поддержку соглашений в ваших компонентах на примере компонента подписки на рассылку sender.subscribe.

1. Выбор.

 

Сделаем в параметрах компонента выбор соглашения для вывода.

Для этого в файле параметров вашего компонента .parameters.php достаточно объявить параметр «USER_CONSENT» => array() и появится раздел с параметрами настройки:

====code====

<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentParameters = array(
    "GROUPS" => array(
    ),
    "PARAMETERS" => array(
     "AJAX_MODE" => array(),
     "USER_CONSENT" => array(),
    )
);

=============

Теперь в настройках компонента появились вот такие настройки:

parametry komponenta.png

2. Вывод в форме.

 

Для вывода нужно использовать компонент main.userconsent.request.

Он выводит чекбокс с подписью, по нажатию на которую выводится окно с текстом соглашения.

Окно с текстом адаптивное и уже сделано и под мобильные устройства.

vyvod.png

Также, компонент умеет сохранять полученное согласие.

Само согласие будет в списке, показываемым в по клику в пункте «Полученные согласия» в контекстом меню соглашения на списке.

Компонент main.userconsent.request нужно подключить в шаблоне вашего компонента перед кнопкой отправки формы.

Есть два вида форм:

— один стандартная get/post отправка формы с событием submit;

— отправка через ajax и иные механизмы, реализованные в js, то есть без события submit у формы.

Для них нужно по разному использовать компонент.

1) Простая форма с событием submit.

 

Подключаем компонент main.userconsent.request перед кнопкой отправки формы

====code====

<fo rm method="POST">
    <input name="EMAIL" placeholder="Email">
    <input name="PHONE" placeholder="Телефон">
    <input name="NAME" placeholder="Имя">
    <br>
    <?if ($arParams['USER_CONSENT'] == 'Y'):?>
     <?$APPLICATION->IncludeComponent(
      "bitrix:main.userconsent.request",
      "",
      array(
          "ID" => $arParams["USER_CONSENT_ID"],
          "IS_CHECKED" => $arParams["USER_CONSENT_IS_CHECKED"],
          "AUTO_SAVE" => "Y",
          "IS_LOADED" => $arParams["USER_CONSENT_IS_LOADED"],
          "REPLACE" => array(
           'button_caption' => 'Подписаться!',
           'fields' => array('Email', 'Телефон', 'Имя')
          ),
      )
     );?>
    <?endif;?>
    <input type="submit" name="subscribe" value="Подписаться!">
</form>

=============

Указанные в примере параметры $arParams появятся в шаблоне вашего компонента при наличии

в .parameters.php блока «USER_CONSENT» => array()

В параметре REPLACE передается

— button_caption, название кнопки отправки формы;

— fields, массив названий полей, которые попадут в текст соглашения.

2) Форма без события submit(ajax и пр).

В компонент нужно передать в параметре SUBMIT_EVENT_NAME название события, при котором появится окно запроса согласия.

Далее, нужно добавить обработчик события принятия соглашения.

Если обработчик поймает событие — значит, согласие получено и можно отправлять форму/данные или выполнять какое-то действие.

====code====

<div id="my_container">
    <input type="text" placeholder="Электронный адрес" name="EMAIL">
    <input type="submit" id="fire_event" value="Отправить">
    <br>
    <?if ($arParams['USER_CONSENT'] == 'Y'):?>
        <?$APPLICATION->IncludeComponent(
            "bitrix:main.userconsent.request",
            "",
            array(
                'ID' => $arParams["USER_CONSENT_ID"],
                "IS_CHECKED" => $arParams["USER_CONSENT_IS_CHECKED"],
                "IS_LOADED" => "Y",
                "AUTO_SAVE" => "N",
                'SUBMIT_EVENT_NAME' => 'my-event-name',
                'REPLACE' => array(
                    'button_caption' => 'Отправить',
                    'fields' => array('Электронный адрес')
                ),
            )
        );?>
    <?endif;?>
</div>
    
<sc ript type="text/javascript">
BX.ready(function () {

    var submitBtn = BX('fire_event');
    BX.bind(submitBtn, 'click', function(){
        BX.onCustomEvent('my-event-name', []);
    });

    if (!BX.UserConsent)
    {
        return;
    }
    var control = BX.UserConsent.load(BX('my_container'));
    if (!control)
    {
        return;
    }
    
    BX.addCustomEvent(
        control,
        BX.UserConsent.events.save,
        function (data) {
            console.log('js event:', 'save', data);
            // успешно!
            // отправляем ajax 
            // или другие действия
        }
    );
    
});
</sc ript>

=============

3. Сохранение согласия.

 

В параметрах компонента есть параметр AUTO_SAVE.

Если его значение равно Y, то согласие автоматически сохраняется компонентом.

Если вам нужно сохранить согласие самим, то передайте значение N.

А для ручного добавления согласия вызовите следующий код:

====code====

   BitrixMainUserConsentConsent::addByContext( 
       $arParams["USER_CONSENT_ID"]
   );

=============

Теперь у вас есть инструмент, с помощью которого вы можете быстро привести свои компоненты в соответствие закону, а также помочь соответствовать вашим клиентам.

Есть еще то, что не описал:

— добавление своего источника данных;

— при просмотре согласий вывод связи со своей сущностью;

— кейс использования в виде ссылок;

— дополнительные компоненты выбора и просмотра.

Если вам эта тема интересна — пишите в комментариях, добавим в статью доп информацию.

.
Подробнее…