Иногда бывают ситуации, когда пользователю можно регистрироваться на сайте без подтверждения, но для каких-то действий все же требуется подтверждение. Например, авторизоваться и купить в магазине можно без подтверждения, а вот написать на форуме - уже подтвердив электронный адрес. (кстати, стандартный компонент оформления заказа не будет автоматически регистрировать пользователя, если включена опция подтверждения, а данный модуль решает и эту задачу) [spoiler] Все решает новый модуль Отложенного подтверждения регистрации, который после модерации его на Маркете вы сможете скачать и установить бесплатно. Но несколько телодвижений все же потребуется.
1. Прежде всего, заведем новую группу пользователей, куда будут попадать только что зарегистрированные, но не подтвердившие email, пользователи. Отметим ее как группу для регистрации, и уберем оттуда вашу настоящую группу зарегистрированных
Заодно отключим опцию подтверждения по e-mail стандартную. Иначе предлагаемая схема не будет работать. Но вот сколько дней хранить неподтвердивших - эта опция будет использоваться (о ней ниже).
2. По идее, раз вы заинтересовались данным постом, у вас на сайте уже есть ряд сервисов или страниц, куда имеют доступ только зарегистрированные пользователи (это та группа, которую вы удалили из настроек в предыдущем пункте). Можно разрешить только этой группе писать в форум, или только этой группе заходить на ту или иную страницу. Допустим, мы создали такую страницу
И закрыли доступ к ней всем, кроме зарегистрированных
Соответственно, все зарегистрированные только что, в нее не будут иметь доступы. Замечу, что до сих пор модуль вообще никак не используется. А вот дальше он помогает пользователям подтвердить свою регистрацию.
3. Создайте какую-либо страницу, куда разместите простой компонент модуля (у него нет настроек). Я создал страницу /auth/confirm.php
4. На эту страницу будут попадать пользователи по ссылке из письма с кодом подтвреждения. Теперь нам надо немного подправить шаблон этого самого письма. Находим "[ NEW_USER_CONFIRM ] == Подтверждение регистрации нового пользователя". И меняем его по своему усмотрению, но обязательно вписав ссылку на новую страницу подтверждения: http://#SERVER_NAME#/auth/confirm.php?confirm_code=#CONFIRM_CODE#
5. Чуть не забыл, что после установки модуля вам надо будет пройти в его настройки и выставить их
Тут мы видим ту самую галочку для удаления пользователей, так и не подтвердивших регистрацию. Замечу, оттуда будут удаляться даже активные пользователи, будьте внимательны. Ну а вверху ставите нужные группы.
Понимаете, что произошло? Мы вынесли часть настроек главного модуля в отдельный и добавили новый шаг, который решает нашу задачу.
По идее, это все, только мелкая деталь. Представим сценарий - пользователь регистрируется, пытаясь добраться до определенного функционала, а ему опять форма аворизации! Как мол так - я уже и авторизован, что еще надо этому сайту? Знакомо?
Это решаемо! Но без кастомизации системного шаблона все же не обойтись. Копируем папку /bitrix/components/bitrix/system.auth.authorize/templates/.default в/ bitrix/templates/.default/components/bitrix/system.auth.authorize (ну, или вместо .default в папку сайта нужного). Затем открываем шаблон template.php и в самом верху пишем что-то типа такого:
Система смотрит, если пользователь находится в группе неподтвержденных, значит (с вероятностью 90%) он не подтвердил e-mail, и просит это сделать. Можно убрать return и написать что-то типа "либо войдите под другим логином".
В итоге получим вместо пугающего окна авторизации вполне дружелюбную форму:
Тут мы видим ту самую галочку для удаления пользователей, так и не подтвердивших регистрацию. Замечу, оттуда будут удаляться даже активные пользователи, будьте внимательны. Ну а вверху ставите нужные группы.
Удаление активных пользователей - жесть. Ты их правда удаляешь, или деактивируешь, или ты их только из группы "Зарегистрированные, но не подтвержденные" исключаешь?
Артемий, а чем активные, но не подтвержденные отличаются от неактивных и неподтвержденных? Поэтому, если владелец сайта поставил такую галочку, мусор ему осознанно не нужен, и он удаляется.
Ну и если пользователь успеет обзавестись сущностями (тот же заказ), удалиться он не сможет.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».