/var/log/life.log
Блог программиста из солнечной Бурятии

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