Новинка
Битрикс модуль «TS Умная авторизация»

TS Умная авторизация

Компоненты форм авторизации, регистрации и восстановления пароля Битрикс на jQuery.ajax() и социальные сети.
Совершенно новый модуль авторизации/регистрации/восстановления пароля.

Все компоненты работают на jQuery.ajax() с возможностью встроенного в Битрикс шифрования или https.

С модулем установится:
1) 7 компонентов, необходимых для хедера сайта, для страницы авторизации, и для замены системной авторизации $APPLICATION->ShowAuthForm()

2) Два почтовых шаблона с возможностью передачи пароля
- API_AUTH_NEW_USER
- API_AUTH_NEW_USER_CONFIRM

3) Заглушка для шаблона компонента bitrix:system.auth.authorize
4) Административные страницы настроек модуля в разделе Сервисы

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

Почти все настройки компонентов вынесены в админку в раздел:
Сервисы - TS Умная авторизация

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

Требования, без которых модуль работать не будет!
- Битрикс 16.5.10 +
- jQuery 1.8+
- Установленный со всеми обновлениями модуль TS Front-end framework
- Знания шаблонизации Битрикс
- Прямые руки

МИНИМАЛЬНАЯ НАСТРОЙКА ПОСЛЕ УСТАНОВКИ
1) Сначала необходимо установить два модуля:
TS Умная авторизация + TS Front-end framework
второй фреймворк должен установиться автоматически, но если не установился, установите вручную.

2) Далее перейдите в админку в раздел Сервисы - TS Умная авторизация и в настройках авторизации выберите, если не выбрано,  вход на сайт по необходимым полям, например Логин + E-mail.
Вход только по телефону пока не работает, его не выбирайте.

3) В настройках регистрации пока ничего выбирать не нужно, по умолчанию компонент выводит следующие поля для регистрации:
Имя и E-mail
Логин и пароль в таком случае создаются автоматические, если хотите, что бы пользователь их сам задавал, тогда надо выбрать необходимые поля.

УСТАНОВКА КОМПОНЕНТОВ В ПУБЛИЧНОЙ ЧАСТИ САЙТА

Сначала в хедере сайта надо подключить jQuery (если не подключен):
CJSCore::Init(array('jquery'));

В хедере сайта может быть два варианта авторизации:
1. Через компонент модуля: api:auth.ajax
2. Через компонент корзины: bitrix:sale.basket.basket.line

1) Рассмотри авторизацию через компонент модуля
В хедере шаблона сайта (файл header.php) нужно разместить такой код вызова компонента
<?$APPLICATION->IncludeComponent(
   "api:auth.ajax",
   "",
   Array(
      "LOGIN_BTN_CLASS" => "api_button api_button_small",
      "LOGIN_MESS_HEADER" => "Вход на сайт",
      "LOGIN_MESS_LINK" => "Вход",
      "REGISTER_BTN_CLASS" => "api_button api_button_small",
      "REGISTER_MESS_HEADER" => "Регистрация",
      "REGISTER_MESS_LINK" => "Регистрация",
      "RESTORE_MESS_HEADER" => "Вспомнить пароль"
   )
);?>
Данный компонент в модальном окне будет выводить три формы:
1. Вход на сайт: api:auth.login
2. Регистрация: api:auth.register
3. Вспомнить пароль: api:auth.restore

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

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

2) Рассмотри авторизацию через компонент корзины Битрикс
На понадобится скопированный шаблон этого компонента и файл
top_template.php

Копируется шаблон примерно по этому пути, куда скопируется в вашем случае запоминайте:
/bitrix/templates/eshop_bootstrap_green/components/bitrix/sale.basket.basket.line/template1/top_template.php

В этом файле замените родные ссылки авторизации:
<a href="<?=$arParams['PATH_TO_AUTHORIZE']?>?login=yes&backurl=<?=$currentUrl; ?>"><?=GetMessage('TSB1_LOGIN')?></a>
<a href="<?=$arParams['PATH_TO_REGISTER']?>?register=yes&backurl=<?=$currentUrl; ?>"><?=GetMessage('TSB1_REGISTER')?></a>
На новые, обязательно с классами и дата-атрибутами, иначе работать вызов форм не будет.
<div class="api_auth_ajax">
  <a class="api_link" rel="nofollow" href="#api_auth_login" data-header="<?=GetMessage('TSB1_LOGIN_HEADER')?>"><?=GetMessage('TSB1_LOGIN')?></a>
  <a class="api_link" rel="nofollow" href="#api_auth_register" data-header="<?=GetMessage('TSB1_REGISTER_HEADER')?>"><?=GetMessage('TSB1_REGISTER')?></a>
</div>
Добавьте к шаблону лэнги в подпапке: /lang/ru/template.php
$MESS['TSB1_LOGIN']           = "Войти";
$MESS['TSB1_LOGIN_HEADER']    = "Вход на сайт";
$MESS['TSB1_REGISTER']        = "Регистрация";
$MESS['TSB1_REGISTER_HEADER'] = "Регистрация";
И еще в футере шаблона сайта необходимо разместить компонент из шага 1 но без вывода ссылок, скрытый чтобы был.
<?$APPLICATION->IncludeComponent(
   "api:auth.ajax",
   "",
   Array(
      "LOGIN_BTN_CLASS" => "api_button api_button_small",
      "LOGIN_MESS_HEADER" => "Вход на сайт",
      "LOGIN_MESS_LINK" => "",
      "REGISTER_BTN_CLASS" => "api_button api_button_small",
      "REGISTER_MESS_HEADER" => "Регистрация",
      "REGISTER_MESS_LINK" => "",
      "RESTORE_MESS_HEADER" => "Вспомнить пароль"
   )
);?>
Если все сделали правильно, при клике по ссылкам Войти или Регистрация должны показываться соответствующие формы в модальном окне.

3) Авторизации на странице /auth/index.php
Чаще всего используемая страница, но может использоваться любая, на этой странице нам понадобится уже другой компонент, не в модальных окнах, а обычный: api:auth

Содержимое страницы будет таким:
<?
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Авторизация");
?>
<? $APPLICATION->IncludeComponent('api:auth', '', array(
        "SET_TITLE"       => "Y",
        "MESS_AUTHORIZED" => "Добро пожаловать на сайт!",
        //"GROUP_ID"      => array("8","9","10"),
    )
);
?>
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>

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

4) $APPLICATION->ShowAuthForm()
Вообще, на 3 шаге было все, тут только может быть проблема.
Метод выше может выводить в компонентах Битрикс, где нужна проверка прав доступа, штатную форму авторизации, это компонент bitrix:system.auth.authorize, чтобы вместо него выводить формы данного модуля, с модулем установится дефолтный шаблон этого ком
понента:
/bitrix/templates/.default/components/bitrix/system.auth.authorize/.default/template.php

Содержимое этого шаблона:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
	die();
?>
<? $APPLICATION->IncludeComponent('api:auth', '', array()); ?>
Т.к. настройки основных компонентов данного модуля авторизации вынесены в админку, тут достаточно вызвать компонент
api:auth и все, все настройки он возьмет из базы.

Но проблема может быть, если в вашем шаблоне сайта, не в дефолтном, будет скопирован шаблон компонента bitrix:system.auth.authorize, Битрикс сначала найдет его и будет показывать, чтобы этого не происходило, либо удалите, либо просто переименуйте как-то эту папку, чтобы он не показывался.

Все, на этом вся авторизация готова, ее пример есть на мой сайте.

ОШИБКИ

Как всегда, из возможных проблем - jQuery:
1. либо не подключена,
2. либо неправильно подключена
3. либо много раз подключена
4. либо есть js-ошибки на странице

jQuery должна подключаться один раз, самой первой, перед всеми ее плагинами, без ошибок.
А как правильно это сделать в Битриксе читайте в моей статье
Правильный header.php в Битрикс

Если будут приходить дубли писем, смотрите дубли почтовых шаблонов на сайте.

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

Если не работает авторизация/регистрации и т.д. смотрите ответы аякса так же в панели веб-разработчика вашего браузера по F12 на вкладке Сеть -> XHR
Чаще всего на сайтах неопытные разработчики делают какие-то РЕКВЕСТ перехватчики, либо модули из маркетплейса этим занимаются, и могут мешать работе компонентов.

Также может быть проблема в этом файле, где подключают различные классы, фреймворки, обработчики и т.д., что может мешать работе любого модуля. И не надо мне про это писать, смотрите сами,  пишите своему разработчику, находите что влияет и исправляйте, это не мои проблемы.
/bitrix/php_interface/init.php

НАСТРОЙКИ АВТОРИЗАЦИИ ГЛАВНОГО МОДУЛЯ

Компоненты слушают некоторые настройки Авторизации главного модуля, конкретно:

- Разрешить авторизацию через внешние сервисы
При включенной опции станет доступна авторизация и регистрация через внешние сервисы, пока это выводит стандартный компонент Битрикс, ничего прогать не нужно, автоматически появится в компонентах данного модуля

- Передавать пароль в зашифрованном виде
Рекомендую включить шифрование и сгенерировать Ключ шифрования, тогда все пароли при авторизации или регистрации будут передаваться на сайт через все промежуточные шлюзы в зашифрованном виде, что не позволит злоумышленникам с помощью снифферов собирать пароли от вашего сайта.
Ну, либо как минимум ваш сайт уже должен работать по защищенному протоколу https

- При регистрации добавлять в группу
Данная возможность учитывается, а также есть возможность выводить пользователю группы для регистрации, например: Оптовый покупатель, Розничный и т.д., настраивается в админке в разделе настроек Регистрации.

- E-mail является обязательным полем
Пока E-mail всегда обязательный, т.к. по нему работает вход.

- Запрашивать подтверждение регистрации по E-mail
Данная опция отправляет клиенту письмо по шаблону
API_AUTH_NEW_USER_CONFIRM

- Проверять E-mail на уникальность при регистрации
Тут думаю все понятно


ОБРАТИТЕ ВНИМАНИЕ!!!
- Это не модуль авторизации Битрикс, тут все совсем по-другому, не путайте.
- Это первая версия модуля, абсолютно все еще не сделано, сделано самое необходимое.
- При регистрации пока не поддерживается загрузка файлов, все остальное вроде работает.

Технические данные

Опубликован:
23.06.2017
Обновлен:
11.07.2017
Версия:
1.2.2
Установок:
Менее 50
Битрикс:
Первый сайт, Старт, Стандарт, Малый бизнес, Эксперт, Бизнес
Адаптивность:
Да
Композит:
Да

История версий

Версия 1.2.2
[x] Алерты переведены на стилизованные
[x] Из ссылок убраны rel="nofollow"
Версия 1.2.1
[x] Фикс компонента регистрации
Версия 1.2.0
[+] Добавлена поддержка 152-ФЗ о персональных данных.
Для всех компонентов включается это в настройках модуля на вкладке "Общие"
Версия 1.1.0
[+] В настройки модуля добавлена возможность подключать в компонентах jQuery
Версия 1.0.5
[x] Фикс сообщений авторизации
Версия 1.0.4
[x] Фикс композита
Версия 1.0.3
[x] Фикс стилей ajax-авторизации
Версия 1.0.2
[+] Все настройки компоннетов и модуля вынесены в админку в раздел Сервисы
Версия 1.0.1
[+] Возможность задать css-классы кнопкам Вход и Регистрация в настройках компонента [+] Добавлен шаблон-замена компонента системной авторизации system.auth.authorize
Установка модуля