Рейтинг@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

  • 12.07.2015 - 02:49 / 576438 provider_img}
  • Ничего не работает!!!
    Вы даже не поняли сам принцип авторизации Openid
    Не должно быть никакой повторной регистрации с импортом части инфомации из OpenID
    Пользователь должен быть автоматически зарегистрирован при вводе логина OpenID
    Ваабще жесть
    Ка вы только с такими познаниями до NGCMS доросли - странно как-то
    Ответ от Wolverine: Привет. Прошло конечно уже 4 года с момента написания мною данного плагина, но сделано это было не просто так. Эта работа не является самостоятельным модулем авторизации, а работает вкупе с auth_basic. Всего хорошего.





  • 31.08.2017 - 00:02 / ThomasJep
  • b <a href= http://erectionpillsvcl.com/viagra-overdose >herbal substitutes for viagra</a> close
    heaven|<a href=http://erectionpillsvcl.com/what-happens-if-women-take-viagra>can i get viagra without seeing a doctor</a>
    reddit viagra







  • 31.08.2017 - 00:18 / Marlonral
  • i <a href= http://cialisxtl.com/cialis-effects >when will cialis be available over the counter</a> walked
    gentleman|<a href=http://cialisxtl.com/cialis-over-the-counter-2017>what doe cialis look like</a>
    cialis for daily use cost


















  • 31.08.2017 - 01:39 / Robertfub
  • o <a href= http://viagraicn.com/viagra-video >reload herbal viagra</a> that's
    keeping|<a href=http://viagraicn.com/viagra-vs-cialis-forum>viagra pills for sale</a>
    over the counter viagra alternative




  • 31.08.2017 - 01:43 / ThomasPeews
  • i <a href= http://viagraicn.com/viagra-free >buy viagra online usa</a> red
    dare|<a href=http://viagraicn.com/side-effects-of-viagra>what happens if a female takes viagra</a>
    viagra price cvs




  • 31.08.2017 - 02:11 / Robertfub
  • x <a href= http://viagraicn.com/natural-viagra >viagra vs levitra</a> else
    further|<a href=http://viagraicn.com/whats-better-viagra-or-cialis>buying cheap viagra</a>
    generic viagra online reviews

  • 31.08.2017 - 02:18 / Edgarcreab
  • k <a href= http://viagraicn.com/viagra-discount >cenforce 100 vs viagra</a> perhaps
    sleep|<a href=http://viagraicn.com/sublingual-viagra>how to make natural viagra</a>
    when is the best time to take viagra

  • 31.08.2017 - 02:19 / Marlonral
  • c <a href= http://cialisxtl.com/20-mg-cialis >how to get free cialis</a> could
    do|<a href=http://cialisxtl.com/why-do-you-need-to-find-a-bathroom-with-cialis>lilly cialis coupons</a>
    30 mg cialis





Ooooops

Looks like Twitter's feed isn't working at the moment.