LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
30.08.2016, 05:13:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1] 2 3 4 5 6   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Loginza для Joomla 1.5, 1.7, 2.5, 3.0  (Прочитано 28799 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« : 23.09.2011, 10:19:27 »

Компонент и модуль для авторизации через сервис Loginza сделан на основе компонента и модуля для Joomla 1.5 с этого сайта.
Изменения:
- Убрал в админке компонента вкладку пользователей за ненадобностью.
- Переделал общение с логинзой с сокетов на file т.к. у меня не заработало ни на локали, ни на хосте.
- Восстановил работоспособность на 1.7 и 1.5.

Для работы авторизации необходимо взять ид виджета и ключевое слово на сайте Логинзы, а так-же установить директиву allow_url_fopen в положение "истина", если она еще не установлена в это положение (если работает, то не заморачивайтесь).

Скачать здесь: http://argens.ru/avtorizatsiya-social-login/2-loginza-openid-avtorizatsiya-na-sajte

Разработка ведется здесь: https://github.com/Arkadiy-Sedelnikov/Loginza

Некоторые неисправности, на которые я не могу полвлиять, но вы можете:

Цитировать
не работает опция "Безопастный режим проверки token"
В настройках виджета установлен флажок возле "Безопастный режим проверки token".
При запросе с подписью возвращает ответ:
{"error_type":"token_validation","error_message":"Token not found."}

При запросе без подписи - возвращает необходимые данные.
ответ: http://feedback.loginza.ru/problem/details/id/5410
« Последнее редактирование: 06.10.2014, 11:38:52 от Arkadiy » Записан
 
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #1 : 24.09.2011, 22:04:56 »

Попробуй скачать заново, поправил, у меня устанавливается без ошибок.
Записан
zoor
Захожу иногда
**

Репутация: +3/-0
Offline Offline

Сообщений: 24


« Ответ #2 : 24.09.2011, 22:27:46 »

Кстати, можно тестировать и на локальном компьютере. Для этого просто не нужно слать виджеайди и ключ:

$file = file("http://loginza.ru/api/authinfo?token=" . $this->token );
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #3 : 25.09.2011, 14:29:55 »

Полностью переработал модуль и половину компонента.
Добавил в табличный вывод всех провайдеров, указанных в апи логинзы, но список видимо там устаревший, в виджете их больше. Перестроил табличный вывод на дивы, сделал более компактный и понятный код, разделил шаблоны вывода провайдеров по условиям. Наладил редирект после логина и выхода (в очередной раз).
Качать там-же.
Записан
zoor
Захожу иногда
**

Репутация: +3/-0
Offline Offline

Сообщений: 24


« Ответ #4 : 26.09.2011, 00:39:22 »

Так, други, приветствую! Если честно - очень вломы писать установочноые xml-файлики для плагина, поэтому выкладываю просто файлы плагина + файлы компонента логинзы, которые необходимо изменить. Я тоже частично перелопатил компонент.
Плагин http://webfile.ru/5566344
Компонент http://webfile.ru/5566342
Инструкция:
-добавляем плагин в папку \plugins\authentication, добавляем инфу о новом плагине в БД
-добавляем в таблицу jos_users поле loginza_id, тип varchar(255)
-заменяем файлы компонента логинзы

Должно работать)
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #5 : 27.09.2011, 10:24:59 »

По наводке zoor добавил возможность использования человекопонятного логина с помощью плагина логинзы, а идентификатор логинзы убрал в отдельное поле. При отсутствии или неопубликованности плагина логин образуется по-старому.
Качать там-же.
Компонент и модуль изменены, требуют переустановки (особенно компонент т.к. он теперь создает доп поле в таблице пользователей). Кому лень переустанавливать можно перезалить, но сделать запрос к бд
Код:
ALTER TABLE `#__users` ADD `loginza_id` varchar(255) NOT NULL
предварительно заменив #_ своим префиксом.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #6 : 28.09.2011, 14:38:15 »

Последний штрих.
Добавил возможность произвольного выбора провайдеров авторизации.
Обновлен модуль, остальное можно не качать.
Записан
vadim s. sabinich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Пол: Мужской
Сообщений: 141


переводчик-любитель


« Ответ #7 : 28.09.2011, 15:41:59 »

не совсем понял как работает плагин.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #8 : 28.09.2011, 15:59:16 »

плагин переносит логин в новое поле. только и всего, т.е.  авторизация идет не по узернейм и пароль, а по логинза_ид и пароль.
« Последнее редактирование: 28.09.2011, 19:13:40 от Arkadiy » Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #9 : 29.09.2011, 12:14:02 »

Сегодня нечаяно обнаружил, что из 20 провайдеров авторизации залогиниться можно только 12-ю, остальные восемь пребывают без данных и обработки. Список нерабочих провайдеров:
  • odnoklassniki - отладил, логин не требуется
  • livejournal - отладил, логин не требуется
  • lastfm - отладил, логин не требуется
  • openid
  • mailruapi - отладил, логин не требуется
  • steam - отладил, логин не требуется
  • aol - отладил, логин не требуется
  • verisign

Большая просьба всем заинтересованным - сбросить мне в личку ваш логин/пароль для этих провайдеров чтобы я мог посмотреть ответ сервера и проверить авторизацию. После экспериментов логины удалю. Конфиденциальность гарантирую.
« Последнее редактирование: 30.09.2011, 09:42:59 от Arkadiy » Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #10 : 01.10.2011, 21:31:03 »

Выпустил очередной релиз модуля и компонента. Все провайдеры работают кроме openid и verisign, их я вычеркнул совсем, до той поры пока не раздобудется нужная информация.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #11 : 03.10.2011, 11:40:27 »

Переделал табличный вывод иконок провайдеров в модуле под спрайт. Качать там-же. Изменил iconstable.php и style.css.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #12 : 04.10.2011, 14:06:42 »

Сделал совместимость с Joomla 1.5. Качать там-же.
На 1.5 получился несколько усеченный вариант:
- плагин не работает, т.е. логины будут страшные, как раньше.
- невозможно произвести множественный выбор доступных провайдеров, т.е. выбираются либо все сразу, либо какой-то один.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #13 : 07.10.2011, 16:07:39 »

Обновил модуль до версии 1.0.6, добавил форму ввода логина/пароля чтобы полностью заменить стандартный модуль Joomla. Качать все там-же.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #14 : 12.10.2011, 11:36:28 »

Выпустил компонент версии 1.0.6.
Добавил настройку, позволяющую выбирать способ активации пользователей (сразу после регистрации, либо в соответствии с настройками Joomla).
Записан
ChaosHead
Профи
********

Репутация: +364/-10
Offline Offline

Пол: Мужской
Сообщений: 4277



« Ответ #15 : 18.10.2011, 01:38:59 »

При попытках авторизации получаю ошибку: Invalid API request signature value.
Пробовал Безопасный режим проверки token- не помогает. Что это может быть?
Joomla 1.7.1
« Последнее редактирование: 18.10.2011, 01:44:02 от ChaosHead » Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #16 : 18.10.2011, 05:00:44 »

А если перейти в тестовый режим и на логинзе отключить безопасный режим тогда работает?
Записан
ChaosHead
Профи
********

Репутация: +364/-10
Offline Offline

Пол: Мужской
Сообщений: 4277



« Ответ #17 : 18.10.2011, 12:12:15 »

Да, работает, пользователей создаёт
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #18 : 18.10.2011, 12:23:48 »

Тогда посмотри на наличие ошибок при вводе виджет_ида и секретного слова в настройках компонента (должны совпадать с выданными на логинзе).
Записан
ChaosHead
Профи
********

Репутация: +364/-10
Offline Offline

Пол: Мужской
Сообщений: 4277



« Ответ #19 : 18.10.2011, 19:27:49 »

Да, моя вина, перепутал ID с ключом, т.к. они в другом порядке, чем на сайте.
Тестирую, вроде всё работает. Захожу с разных сервисов.
Первый пользователь у меня создался с логином "Artem", что уже не плохо, но попробую покапаться, чтобы логин брался из ника, хотя не везде наверное это возможно. А вот второй пользователь создался Artem4e9d96b188b8f, что не совсем айс.
Но в любом случае, всё работает, заявленные функции выполняет.
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #20 : 19.10.2011, 05:19:30 »

Пользователь создается исходя из информации, предоставленной выбранным провайдером, а она разная. Возможно три варианта - если пров дает никнейм, то используем его, если нет, но есть ферстнейм, то используем его, если нет, то по старому алгоритму - идентити:провайдер.
Записан
ChaosHead
Профи
********

Репутация: +364/-10
Offline Offline

Пол: Мужской
Сообщений: 4277



« Ответ #21 : 19.10.2011, 17:40:21 »

Не совсем логично использовать Firstname, т.к. в большинстве случаев это имя и оно будет уже неуникальное и тогда логином станет как я и писал "Artem4e9d96b188b8f" (имя с уникальным идентификатором)
Я немного усовершенствовал код на основе аналогичного плагина для phpBB
Код:
               if ($version->RELEASE != '1.5') { //для 1.6 и 1.7
            if($this->pluginEnable){
                if(!empty($json['nickname'])){
                    $nickname = $json['nickname'];
                }
                elseif(!empty($json['email']) && preg_match('/^(.+)\@/i', $json['email'], $emailnick)){ //получаем логин из почты
                    $nickname = $emailnick[1];
                }
                elseif($name != $this->id){ //пусть логин будет полным именем, но только если имени не присвоили id
                    $nickname = $name;
                }
                else{
$patterns = array( //получаем ник из identity
'([^\.]+)\.ya\.ru',
'openid\.mail\.ru\/[^\/]+\/([^\/?]+)',
'openid\.yandex\.ru\/([^\/?]+)',
'([^\.]+)\.myopenid\.com'
);
foreach ($patterns as $pattern) {
if (preg_match('/^https?\:\/\/'.$pattern.'/i', $this->profile->identity, $result)) {
$nickname = $result[1];
}
}
                if(!empty($nickname)){
                    $nickname = $this->id; //в крайнем случае логином будет id
                }
                }
Если ник не передаётся, то плагин попробует получить ник из названия email-ла, если не получается, тогда присваивает нику полное имя, а если и его нет, то пробует получить логин из строки openid. И в крайнем уже случае присваивает логину ID провайдера.

Но у меня остался нерешенный вопрос, который бы сделал этот плагин идеальным для меня.
Вот в этой проверке:
Код:
       $query = 'SELECT * FROM `#__users`';
                $query .= ' WHERE `username` = ' . $db->Quote($nickname). ' LIMIT 1';
                $db->setQuery((string) $query);
                $db->query();
                if ($db->getNumRows()) {
                    //Replace email with a fake name to avoid Joomla user conflict
                    $nickname = $nickname.uniqid();
                }
Если такой ник уже есть в базе, то к нему дописывается уникальный идентификатор uniqid(), вот в этот момент и получается этот длинный логин "Artem4e9d96b188b8f"
В идеале, конечно, хотелось бы, чтобы ему прибавлялась единичка и снова проверялось и т.д.
Т.е. получались бы логины "Artem2", "Artem3" и т.д.
Пытаюсь как-то придумать, чтобы так сделать.
« Последнее редактирование: 19.10.2011, 17:50:14 от ChaosHead » Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #22 : 19.10.2011, 21:36:43 »

Запроси из базы всех содержащих Artem и в цикле проверь на совпадение, как только совпадение пропадет записывай в базу.
Записан
ChaosHead
Профи
********

Репутация: +364/-10
Offline Offline

Пол: Мужской
Сообщений: 4277



« Ответ #23 : 20.10.2011, 03:55:48 »

Немного не так сделал. Запрашиваю всех по очереди. Думаю редко будут случаи, когда кто-то будет с номером, в основном если кто-то второй раз авторизуется другим сервисом. Вроде работает:
Код:
$x=0;
                $tempnickname = $nickname;
while ($x++<9999) {
       $query = 'SELECT * FROM `#__users`';
                        $query .= ' WHERE `username` = ' . $db->Quote($nickname). ' LIMIT 1';
                        $db->setQuery((string) $query);
                        $db->query();
                if ( $db->getNumRows() == 0 ) break;
                $nickname = $tempnickname.$x;
          }

                $data['username'] = $nickname;
Записан
4ort
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 82


« Ответ #24 : 21.10.2011, 18:36:17 »

Кстати, можно тестировать и на локальном компьютере. Для этого просто не нужно слать виджеайди и ключ:

$file = file("http://loginza.ru/api/authinfo?token=" . $this->token );
Очень нужно потестить на локальном сайте, но такой строчки ни в одном файле не нашел...
Можешь подробнее описать, как запустить Loginza на локальном сайте?
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #25 : 21.10.2011, 18:37:39 »

Включить тестовый режим.
Записан
4ort
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 82


« Ответ #26 : 21.10.2011, 19:49:16 »

Arkadiy, у меня появился вопрос по связке компонента с виртуемартом. Я логинюсь через него нормально, то-есть вижу приветствие, имя и кнопку выхода, но когда в модуле логина вирта перехожу по ссылке "Управление учетной записью", то попадаю на форму ввода логина и пароля вирта.
В устройстве самой Joomla я практически ничего не понимаю, но в админке я вижу, что новый пользователь зарегистрирован - как в Joomla, так и в пользователях вртуемарта. Выглядит, как будто у вирта своя копия пользователя, а в Joomla своя. И авторизуются они независимо друг от друга.

Если это так и есть, может-быть можно в настройках плагина или модуля сделать чекбокс, где выбирать, хочешь логиниться в Joomla или в вирте?

Вроде ничего такого пока никто не реализовал, и такое ощущение, что такого решения ждут очень многие)
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #27 : 21.10.2011, 20:07:23 »

Такого расширения быть не может т.к у витра нет своих пользователей, то что ты видишь в вирте частично взято из данных Joomla, частично свое, то что не хватает в профиле Joomla.
Записан
4ort
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 82


« Ответ #28 : 21.10.2011, 21:01:20 »

Тогда почему после удачного залогивания, я не залоген в вирте оказываюсь ( "Я логинюсь через него нормально, то-есть вижу приветствие, имя и кнопку выхода, но когда в модуле логина вирта перехожу по ссылке "Управление учетной записью", то попадаю на форму ввода логина и пароля вирта. ")?
Записан
Arkadiy
Группа развития
*****

Репутация: +424/-0
Online Online

Пол: Мужской
Сообщений: 5176


Крепитесь, други.


« Ответ #29 : 22.10.2011, 06:51:13 »

Это проблема модуля вирта.
Записан
Страниц: [1] 2 3 4 5 6   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet