Рейтинг@Mail.ru
загрузкаидет загрузка

Плагин «auth_loginza :: Вход через OpenID» для NG CMS

plugin-loginza-ngcms-1.png


Теперь авторизоваться с помощью Loginza можно и на сайтах с NG CMS. Плагин не является самостоятельным модулем авторизации, а работает лишь, как дополнение к одному из уже работающих плагинов, например auth_basic.

Версия 0.1 это самый первый вариант (своего рода черновой набросок) нового механизма регистрации/авторизации. Есть еще моменты, которые хотелось доделать, но сегодня уже не успеваю :) Приветствуются предложения по всем шагам этой процедуры.

Также требуется самая последняя версия 0.9.2 из SVN, как минимум нужен новый плагин comments.

История версий
[0.2.1][2011-02-03] [скачать]
* фикс providers.ini

[0.2][2011-02-02] [скачать]
+ добавлена возможность привязки аккаунтов
для существующих пользователей (шаблоны
append.account.success и append.account.error)
+ добавлена возможность изменения/удаления
привязанного аккаунта
+ добавлен шаблон register.error.tpl для вывода
сообщений об ошибках при регистрации
+ добавлен шаблон register.success.tpl для вывода
сообщения об успешной регистрации

[0.1][2011-01-29] [скачать]
+ первый публичный релиз


1. В первую очередь необходимо в \templates\%ваш_шаблон%\usermenu.tpl подключить JavaScript виджет:
<script src="http://loginza.ru/js/widget.js" type="text/javascript"></script>

В этом же файле необходимо разместить ссылку, при нажатии на которую будет всплывать окошко с набором провайдеров для авторизации, например:
<a href="http://loginza.ru/api/widget?token_url=[RETURN_URL]" class="loginza">
<img src="/engine/plugins/auth_loginza/tpl/img/sign_in_button_gray.gif" alt="Войти через loginza"/>
</a>

RETURN_URL - это ссылка такого типа http://ваш_домен.ру/plugin/auth_loginza/

Если вы не хотите выводить всех провайдеров, а только избранных, то на помощь приходит параметр providers_set (если используется несколько значений, перечислите их через зяпятую): google, yandex, mailruapi, mailru, vkontakte, facebook, twitter, loginza, myopenid, webmoney, rambler, flickr, lastfm, verisign, aol, steam, openid.

Ссылка выше будет выглядеть как
http://loginza.ru/api/widget?token_url=http://ваш_домен.ру/plugin/auth_loginza/&providers_set=vkontakte,twitter,google,yandex,mailru,facebook,openid

plugin-loginza-ngcms-2.png (7.17 Kb)


Также виджет мультиязычный: поддерживается три языка русский - ru, украинский - uk и английский - en.

Использовать по аналогии
http://loginza.ru/api/widget?token_url=http://ваш_домен.ру/plugin/auth_loginza/&lang=ru

Все это, следуя логике, нужно размещать в блоке login ... /login, который отображается только для незарегистрированных посетителей.

Тут возникает самый первый вопрос, а не генерировать ли эту ссылку самому, чтобы в usermenu.tpl можно
было просто вставить переменную loginza_link? Но плагин вообще хорош тем, что вставить ссылку можно в любое место, например в комментарии таким образом: (да и вообще в любое место, хоть в news.short.tpl)

в \templates\%ваш_шаблон%\plugins\comments\comments.form.tpl вставить блок

<script src="http://loginza.ru/js/widget.js" type="text/javascript"></script>
Также Вы можете войти используя:
<a href="https://loginza.ru/api/widget?token_url=[RETURN_URL]" rel="nofollow" class="loginza">
    <img src="/engine/plugins/auth_loginza/tpl/img/yandex.png" alt="Yandex" title="Yandex">
    <img src="/engine/plugins/auth_loginza/tpl/img/google.png" alt="Google" title="Google Accounts">
    <img src="/engine/plugins/auth_loginza/tpl/img/vkontakte.png" alt="Вконтакте" title="Вконтакте">
    <img src="/engine/plugins/auth_loginza/tpl/img/mailru.png" alt="Mail.ru" title="Mail.ru">
    <img src="/engine/plugins/auth_loginza/tpl/img/twitter.png" alt="Twitter" title="Twitter">
    <img src="/engine/plugins/auth_loginza/tpl/img/loginza.png" alt="Loginza" title="Loginza">
    <img src="/engine/plugins/auth_loginza/tpl/img/myopenid.png" alt="MyOpenID" title="MyOpenID">
    <img src="/engine/plugins/auth_loginza/tpl/img/openid.png" alt="OpenID" title="OpenID">
    <img src="/engine/plugins/auth_loginza/tpl/img/webmoney.png" alt="WebMoney" title="WebMoney">
</a>

plugin-loginza-ngcms-3.png (11.93 Kb)


Ну или в login.tpl или Ну или в login.tpl или registration.tpl вставить
<iframe src="http://loginza.ru/api/widget?overlay=loginza&token_url=[RETURN_URL]" style="width:359px;height:300px;" scrolling="no" frameborder="no"></iframe>

Вариантов масса.

2. Далее при нажатии на ссылку открывается окно выбора провайдера. Мы выбираем одного из предложенных, Логинза отправляет нас на его сайт, там мы подтверждаем что мы это мы и в результате нам приходят данные о пользователе. Тут начинается самое интересное.

loginza-2.png (37 Kb)


3. При установке плагин добавляет в таблицу *_users свое поле, в котором хранит идентификатор пользователя. Если присылаемый идентификатор уже привязан к какому-то пользователю, то мы без вопросов его авторизуем.

Если нет, то мы показываем ему упрощенную форму регистрации.

plugin-loginza-ngcms-4.png (12.07 Kb)


Зачем вообще нужна форма регистрации? Лично меня дико раздражает, когда сайт генерирует никнейм автоматически на основе идентификатора и не дает выбрать его самостоятельно. Например zhukov-alexey-open-id. А если взять Гугловский идентификатор, то там вообще темный лес из 30 символов нечитаемого формата.

Поэтому плагин подбирает никнейм на основе определенных данных, но дает его откорректировать. Также создаем произвольный пароль, сохраняя возможность для входа, используя стандартную пару логин/пароль. И если провайдер не отдал email также предлагаем его ввести, но это совершенно не обязательно. По крайней мере пока.

Интеграция с комментариями сайта (плагин comments)


Для тех учетных записей, у которых есть привязка профиля к одному из сервисов, в шаблоне \templates\ваш_шаблон\plugins\comments\comments.show.tpl становится доступна переменная loginza_icon, являющаяся пиктограммой этого сервиса. В файле providers.ini уже прописаны все основные сервисы в формате домен = имя_картинки. Его можно дополнять на свой вкус.

Интеграция с профилем (плагин uprofile)


В шаблоне \templates\ваш_шаблон\plugins\uprofile\users.tpl доступна переменная loginza_account,
являющаяся ссылкой на идентификатор.

Также есть условный блок if-loginza, содержимое которого отображается только в случае наличия идентификатора.

В шаблоне \templates\ваш_шаблон\plugins\uprofile\profile.tpl доступна переменная loginza_account,
являющаяся ссылкой на идентификатор.

Также есть условные блоки:
* if-loginza, содержимое которого отображается только в случае наличия идентификатора/
В этот блок удобно брать ссылку на удаление привязанного аккаунта. Она имеет вид
/plugin/auth_loginza/delete/ Или на изменение аккаунта, ссылка идентична ссылке
для авторизации

* if-not-loginza - в случае отсутствия идентификатора. В этот блок удобно брать ссылку
на вход по аналогии с usermenu.tpl. Если такой идентификатор уникален на сайте, то
даем зеленый свет, привязываем аккаунт и показываем содержимое append.account.tpl
Если кто-то уже зарегистрировался с этой учетной записи, то показываем
append.account.error.tpl

Отблагодарить меня можно по следующим реквизитам:

http//digitalplace.ru/images/static/webmoney.png WebMoney: Z185759217217 и R128203457262

http//digitalplace.ru/images/static/yandexmoney.png Яндекс.Деньги: 41001246158060

Комментарии:
  • RocketBoy
  • 30.01.2011 - 02:41 / RocketBoy
  • Спасибо за плагин! 100% полезная весчь.
    Все умчал тестить :)

  • 1.02.2011 - 13:36 / khadorkin provider_img}
  • Спасибо! Действительно очень полезный плагин!

  • 1.02.2011 - 13:39 / khadorkin provider_img}
  • Но определенно, что-то работает не так, на форума NG скину скрины..((

  • Wolverine
  • 3.02.2011 - 00:02 / Wolverine
  • Починил и добавил плюшек :)


  • 20.07.2011 - 16:17 / МАРК
  • а у меня не работает. идёт редирект на ../path/result.php

Также Вы можете войти используя: Yandex Google Вконтакте Mail.ru Twitter Loginza MyOpenID OpenID WebMoney
Добавление комментария:
  • Имя:
  • Email: (не публикуется)
  • каптча
  • Жирный шрифт Подчеркнутый шрифт Зачеркнутый шрифт Наклонный шрифт Вставить ссылку Вставить код Вставить блок для зарегистрированных пользователей Вставить email Вставить цитату Цвет

последние комментарии
последнее на твиттере
  • Twitter / Wolverine_Ru
  • Fri, 18 May 2012 21:37:24: @rpg_twit Лондон тоже сойдет :D Ты вообще когда в ДС будешь?
  • Fri, 18 May 2012 21:29:14: @rpg_twit рядом не хочу, это мой дом :)
  • Fri, 18 May 2012 21:19:25: @1nataliromanova ел :) Я работаю на Комсомольской рядом.
  • Fri, 18 May 2012 21:17:50: Бла, пять минут ходьбы от дома и мини-озеро, птички, лес. Место романтичное, а никого нет. Я же там просто отдыхаю.
  • Fri, 18 May 2012 19:55:15: @1nataliromanova я был на красных ровно пять часов назад тоже :)
  • Fri, 18 May 2012 04:57:25: В 5,30 засунуть в себя можно только пять лесных орехов и чай.