Инструкция по созданию плагина авторизации для socialjlogin
Файловая структура плагина с именем 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 описание плагина:
<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 реализация плагина:
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