MODX. HybridAuth для MODX Revolution
Опубликовано: 03 Декабря 2018
HybridAuth — сниппет, для создания на сайте возможности авторизироваться через социальные сети.
Установка и настройка
- Загрузите и установите компоент.
- Зарегистрируйте сайт в соцсетях, через которые планируете осуществлять регистрацию (подробнее о регистрации ниже). Получите ключи и введите их в настройках админки, в разделе «Настройки системы», фильтруем по «hybridauth» и вбиваем полученные ключи.
- В нужном месте шаблона (чанка) сделайте вызов компонента
<!-- простейший вызов --> [[!HybridAuth]] <!-- вызов с указанием нужных соц.сетей и группы в которую будут попадать пользователи --> [[!HybridAuth? &providers=`Twitter,Facebook,Vkontakte` &groups=`Users:2` ]]
Получения ключа авторизации oAuth
Если ссылка оказалась битой, сервис регистрации сайта можо найти по слову oAuth.
При указании ответной страницы, в MODX используется путь
https://example.com/?hauth.done=Google
Адрес должен быть введен точно, вплоть до протокола https/http, иначе будет возникать ошибка.
Документация
HybridAuth
HybridAuth
Сниппет выводит форму для авторизации на сайте.
Параметры
Название | По умолчанию | Описание |
---|---|---|
&activeProviderTpl | tpl.HybridAuth.provider.active |
Чанк для вывода иконки привязанного сервиса. |
&addContexts | Дополнительные контексты, через запятую. Например, &addContexts=`web,ru,en`
|
|
&groups | Список групп для регистрации пользователя, через запятую. Можно указывать роль юзера в группе через двоеточие. Например, &groups=`Users:1` добавит юзера в группу "Users" с ролью "member". |
|
&loginContext | current context |
Основной контекст для авторизации. По умолчанию - текущий. |
&loginResourceId | 0 |
Идентификатор ресурса, на который отправлять юзера после авторизации. По умолчанию, это 0 - обновляет текущую страницу. |
&loginTpl | tpl.HybridAuth.login |
Этот чанк будет показан анонимному пользователю, то есть любому гостю. |
&logoutResourceId | 0 |
Идентификатор ресурса, на который отправлять юзера после завершения сессии. По умолчанию, это 0 - обновляет текущую страницу. |
&logoutTpl | tpl.HybridAuth.logout |
Этот чанк будет показан авторизованному пользователю. |
&providerTpl | tpl.HybridAuth.provider |
Чанк для вывода ссылки на авторизацию или привязку сервиса к учетной записи. |
&providers | all available |
Список провайдеров авторизации, через запятую. Все доступные провайдеры находятся тут {core_path}components/hybridauth/model/hybridauth/lib/Providers/ . Например, ```&providers=`Google,Twitter,Facebook````. |
&rememberme | 1 |
Запоминает пользователя на долгое время. По умолчанию - включено. |
Примеры
Сниппет нужно вызывать некэшированным, так как в зависимости от авторизации пользователя он выводит разные чанки.
При обычном вызове сниппет выведет всех провайдеров, зарегистрированных в системе
[[!HybridAuth]]
[[!HybridAuth]]
Их можно ограничить, указав списком, через запятую:
[[!HybridAuth?
&providers=`Yandex,Google,Twitter,Facebook,Vkontakte`
]]
[[!HybridAuth?
&providers=`Yandex,Google,Twitter,Facebook,Vkontakte`
]]
Авторизация в 2 контекста сразу:
[[!HybridAuth?
&providers=`Yandex,Google`
&loginContext=`web`
&addContexts=`en`
]]
[[!HybridAuth?
&providers=`Yandex,Google`
&loginContext=`web`
&addContexts=`en`
]]
Настройки провайдеров
Для каждого провайдера авторизации указывается отдельная системная настройка с префиксом ha.keys.:
Значение настройки - JSON массив, содержимое которого зависит от самого провайдера.
Например, для Google нужно указать id и secret, а для Twitter - key и secret. Так что, смотрите внимательно, какие настройки вам выдаят сервис при регистрации.
Ссылки на регистрацию у провайдеров
Для работы компонента нужно получить ключи от провайдера. Поэтому, вот несколько основных ссылок:
Контексты
Если у вас несколько независимых контекстов на сайте, вы можете организовать для них авторизацию через одних и тех же провайдеров, но для разных доменов.
Для этого нужно указывать ключи непосредственно в настройках контекста, а не в общих системных.
Для правильной работы сниппета желательно включить дружественные url.
Возможные проблемы
Если не работает вход через Вконтакте, замените файл по адресу core/components/hybridauth/vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers/Vkontakte.php
на тот что находиться по ссылке: