Инструкция по созданию плагина авторизации для socialjlogin
Файловая структура плагина с именем network:
1 2 3 4 5 6 7 8 9 | /network |~language/ | |~en-GB/ | | |-en-GB.plg_socialjlogin_network.ini | | |-en-GB.plg_socialjlogin_network.sys.ini |-index.html |-network.php |-network.png |-network.xml |
network.png – изображени социальной сети, которое будет показываться в модуле авторизации.
network.xml – стандартное joomla описание плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | < ?xml version="1.0" encoding="utf-8"?> <extension version="2.5" type="plugin" group="socialjlogin" method="upgrade"> <name>plg_socialjlogin_network</name> <author>Author</author> <creationdate>Date</creationdate> <copyright>Copyright</copyright> <license>license</license> <authoremail>email</authoremail> <authorurl>site</authorurl> <version>version</version> <description>PLG_SOCIALJLOGIN_NETWORK_XML_DESCRIPTION</description> <files> <filename plugin="network">network.php</filename> <filename>index.html</filename> <filename>network.png</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_socialjlogin_network.ini</language> <language tag="en-GB">en-GB/en-GB.plg_socialjlogin_network.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic"> <field name="appid" type="text" default="" description="PLG_SOCIALJLOGIN_NETWORK_FIELD_APPID_DESC" label="PLG_SOCIALJLOGIN_NETWORK_FIELD_APPID_LABEL" /> <field name="secret" type="text" default="" description="PLG_SOCIALJLOGIN_NETWORK_FIELD_SECRET_DESC" label="PLG_SOCIALJLOGIN_NETWORK_FIELD_SECRET_LABEL" /> </fieldset> </fields> </config> </extension> |
network.php реализация плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | defined('_JEXEC') or die; if (!class_exists('SocialjloginPlugin')) require(JPATH_ROOT .'/components/com_socialjlogin/plugin.php'); class plgSocialjloginNetwork extends SocialjloginPlugin { protected $name = 'network'; public function __construct($subject, $config) { parent::__construct($subject, $config); $this->loadLanguage(); } |
Класс плагина должен наследоваться от SocialjloginPlugin, а не JPlugin
В плагине должны быть обязательно реализованы следующие методы:
public function onLogin() – Вызывается по нажатию кнопки соц.сети в модуле авторизации.(Авторизация и получение данных пользователя из соц сети)
public function onMerge() – Аналогично onLogin, но если пользователь уже авторизован на сайте
public function onAuth($options) – Вызывается во время авторизации, для проверки пользователя через соц.сеть, возвращает false в случае неудачи либо объект {id,password} в случае успеха, данный объект возвращает встроенный метод getResponse().(Проверка наличия данных пользователя из соц.сети и запись их в базу данных)
protected function getEmail() – Должен возвращать email пользователя
protected function getUsername() – Должен возвращать username пользователя
protected function getName() – должен возвращать имя пользователя
protected function getSocId() – должен возвращать идентификатор пользователя в социальной сети
Необязательные методы:
public function onLogout($user, $options) – Вызывается при выходе посетителя.(Очищение cookie)
public function getIcon() – возвращает html для показа кнопки входа, по умолчанию, это картинка png из папки с плагином ссылающаяся на index.php?option=com_socialjlogin&task=login&type= + название плагина. Пример реализации – плагин mail.ru