HybridAuth - авторизация через соцсети

Портировал на Evo популярный компонент HybridAuth за авторством bezumkin .
Особенности:
  • используется библиотека HybridAuth, которая реализует авторизацию через множество соцсетей (провайдеров) без посредников;
  • регистрация (в том числе с добавлением в группы) и авторизация пользователей;
  • привязка нескольких соцсетей к одному пользователю;
  • управление привязанными соцсетями из админки .

Скачивать здесь: github.com/Pathologic/EvoHybridAuth

Установка

После установки нужно зайти на страницу веб-пользователя в админке, чтобы создалась таблица. Затем переименовать файл config.sample в config.php в папке assets/plugins/hybridauth/config и настроить в нем необходимые соцсети. По настройке придется гуглить, но что-то можно найти здесь: docs.modx.pro/components/hybridauth/providers/
Также должен быть включен плагин userHelper.

Классы для основных провайдеров находятся в папке assets/plugins/hybridauth/vendor/hybridauth/hybridauth/hybridauth/Hybrid/Providers/ и не требуют дополнительных действий. В случае дополнительных провайдеров из папки assets/plugins/hybridauth/vendor/hybridauth/hybridauth/additional-providers/ необходимо добавить в конфигурацию провайдера ключ wrapper. На примере Vkontakte:

"Vkontakte" => array(
        "enabled" => true,
        "keys" => array("id" => "", "secret" => ""),
        "wrapper" => array(
            'class'=>'Hybrid_Providers_Vkontakte',
            'path' => MODX_BASE_PATH.'assets/plugins/hybridauth/vendor/hybridauth/hybridauth/additional-providers/hybridauth-vkontakte/Providers/Vkontakte.php'
        )
    ),


Вопросы по настройке соцсетей и попутным проблемам задавайте авторам библиотеки HybridAuth и создателям соцсетей; я в этом не разбираюсь и не хочу разбираться.

Компонент состоит из плагина и сниппета. Cниппет выводит список доступных для использования соцсетей, а плагин обеспечивает взаимодействие с ними.

Параметры плагина

  • registerUsers — разрешает регистрацию новых пользователей. Если запрещено, то авторизованный пользователей должен привязать в своем профиле соцсети и входить потом через них;
  • debug — включает режим отладки, сообщения пишутся как в лог MODX, так и в файл assets/cache/ha/error.log;
  • rememberme, cookieName, cookieLifetime — параметры для запоминания пользователя после авторизации, описаны в документации FormLister;
  • redirectUri — адрес страницы, на которую пользователя возвращают из соцсетей, если не заполнять, то будет использоваться главная страница сайта; этот адрес должен совпадать с тем, что указывается в настройках приложений соцсетей;
  • loginPage — id страницы, на которую пользователь должен быть перенаправлен после авторизации; если не заполнено, то текущая страница;
  • logoutPage — id страницы, на которую пользователь должен быть перенаправлен после выхода; если не заполнено, то текущая страница;
  • groups — список групп, в которые нужно добавить пользователя после регистрации, в виде json-массива;
  • userModel- класс для работы с пользователями, по умолчанию — modUsers;
  • tabName — заголовок вкладки на странице веб-пользователя в админке

Параметры сниппета

  • langDir, lang, lexicon — настройка лексиконов, см. документацию FormLister;
  • tpl — шаблон списка провайдеров, доступны плейсхолдеры [+providers+] и [+error+]; если значение пустое, то вернется массив с ключами providers и error;
  • providerTpl — шаблон провайдера, доступны плейсхолдеры [+url+] (ссылка для выполнения действия), [+classNames+] (имена классов), [+title+] (название провайдера);
  • activeProviderTpl — шаблон подключенного провайдера, если не указывать, то используется значение providerTpl;
  • errorTpl — шаблон сообщения об ошибке, доступен плейсхолдер [+error+];
  • registerCss — подключает файл assets/snippets/hybridauth/css/default.css

В большинстве случаев будет достаточно вызвать сниппет с параметром registerCss:

[!HybridAuth? ®isterCss=`1`!]

1 комментарий

avatar
Спасибо. Обязательно надо будет потестить.
  • 1px
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.