0 Пользователей и 1 Гость просматривают эту тему.
  • 150 Ответов
  • 37477 Просмотров
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Loginza для Joomla 1.5, 1.7, 2.5, 3.0
« : 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

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #1 : 24.09.2011, 22:04:56 »
Попробуй скачать заново, поправил, у меня устанавливается без ошибок.
*

zoor

  • Осваиваюсь на форуме
  • 24
  • 3 / 0
Re: Loginza для Joomla 1.7
« Ответ #2 : 24.09.2011, 22:27:46 »
Кстати, можно тестировать и на локальном компьютере. Для этого просто не нужно слать виджеайди и ключ:

$file = file("http://loginza.ru/api/authinfo?token=" . $this->token );
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #3 : 25.09.2011, 14:29:55 »
Полностью переработал модуль и половину компонента.
Добавил в табличный вывод всех провайдеров, указанных в апи логинзы, но список видимо там устаревший, в виджете их больше. Перестроил табличный вывод на дивы, сделал более компактный и понятный код, разделил шаблоны вывода провайдеров по условиям. Наладил редирект после логина и выхода (в очередной раз).
Качать там-же.
*

zoor

  • Осваиваюсь на форуме
  • 24
  • 3 / 0
Re: Loginza для Joomla 1.7
« Ответ #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

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #5 : 27.09.2011, 10:24:59 »
По наводке zoor добавил возможность использования человекопонятного логина с помощью плагина логинзы, а идентификатор логинзы убрал в отдельное поле. При отсутствии или неопубликованности плагина логин образуется по-старому.
Качать там-же.
Компонент и модуль изменены, требуют переустановки (особенно компонент т.к. он теперь создает доп поле в таблице пользователей). Кому лень переустанавливать можно перезалить, но сделать запрос к бд
Код
ALTER TABLE `#__users` ADD `loginza_id` varchar(255) NOT NULL
предварительно заменив #_ своим префиксом.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #6 : 28.09.2011, 14:38:15 »
Последний штрих.
Добавил возможность произвольного выбора провайдеров авторизации.
Обновлен модуль, остальное можно не качать.
*

vadim s. sabinich

  • Захожу иногда
  • 139
  • 11 / 0
  • переводчик-любитель
Re: Loginza для Joomla 1.7
« Ответ #7 : 28.09.2011, 15:41:59 »
не совсем понял как работает плагин.
VPS-хостинг на FirstVDS.ru || VPS/хостинг на ISPserver.com -- рефералам онлайн поддержка!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #8 : 28.09.2011, 15:59:16 »
плагин переносит логин в новое поле. только и всего, т.е.  авторизация идет не по узернейм и пароль, а по логинза_ид и пароль.
« Последнее редактирование: 28.09.2011, 19:13:40 от Arkadiy »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #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

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #10 : 01.10.2011, 21:31:03 »
Выпустил очередной релиз модуля и компонента. Все провайдеры работают кроме openid и verisign, их я вычеркнул совсем, до той поры пока не раздобудется нужная информация.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7
« Ответ #11 : 03.10.2011, 11:40:27 »
Переделал табличный вывод иконок провайдеров в модуле под спрайт. Качать там-же. Изменил iconstable.php и style.css.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #12 : 04.10.2011, 14:06:42 »
Сделал совместимость с Joomla 1.5. Качать там-же.
На 1.5 получился несколько усеченный вариант:
- плагин не работает, т.е. логины будут страшные, как раньше.
- невозможно произвести множественный выбор доступных провайдеров, т.е. выбираются либо все сразу, либо какой-то один.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #13 : 07.10.2011, 16:07:39 »
Обновил модуль до версии 1.0.6, добавил форму ввода логина/пароля чтобы полностью заменить стандартный модуль Joomla. Качать все там-же.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #14 : 12.10.2011, 11:36:28 »
Выпустил компонент версии 1.0.6.
Добавил настройку, позволяющую выбирать способ активации пользователей (сразу после регистрации, либо в соответствии с настройками Joomla).
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #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

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #16 : 18.10.2011, 05:00:44 »
А если перейти в тестовый режим и на логинзе отключить безопасный режим тогда работает?
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #17 : 18.10.2011, 12:12:15 »
Да, работает, пользователей создаёт
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #18 : 18.10.2011, 12:23:48 »
Тогда посмотри на наличие ошибок при вводе виджет_ида и секретного слова в настройках компонента (должны совпадать с выданными на логинзе).
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #19 : 18.10.2011, 19:27:49 »
Да, моя вина, перепутал ID с ключом, т.к. они в другом порядке, чем на сайте.
Тестирую, вроде всё работает. Захожу с разных сервисов.
Первый пользователь у меня создался с логином "Artem", что уже не плохо, но попробую покапаться, чтобы логин брался из ника, хотя не везде наверное это возможно. А вот второй пользователь создался Artem4e9d96b188b8f, что не совсем айс.
Но в любом случае, всё работает, заявленные функции выполняет.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #20 : 19.10.2011, 05:19:30 »
Пользователь создается исходя из информации, предоставленной выбранным провайдером, а она разная. Возможно три варианта - если пров дает никнейм, то используем его, если нет, но есть ферстнейм, то используем его, если нет, то по старому алгоритму - идентити:провайдер.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #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

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #22 : 19.10.2011, 21:36:43 »
Запроси из базы всех содержащих Artem и в цикле проверь на совпадение, как только совпадение пропадет записывай в базу.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #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

  • Захожу иногда
  • 82
  • 0 / 0
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #24 : 21.10.2011, 18:36:17 »
Кстати, можно тестировать и на локальном компьютере. Для этого просто не нужно слать виджеайди и ключ:

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #25 : 21.10.2011, 18:37:39 »
Включить тестовый режим.
*

4ort

  • Захожу иногда
  • 82
  • 0 / 0
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #26 : 21.10.2011, 19:49:16 »
Arkadiy, у меня появился вопрос по связке компонента с виртуемартом. Я логинюсь через него нормально, то-есть вижу приветствие, имя и кнопку выхода, но когда в модуле логина вирта перехожу по ссылке "Управление учетной записью", то попадаю на форму ввода логина и пароля вирта.
В устройстве самой Joomla я практически ничего не понимаю, но в админке я вижу, что новый пользователь зарегистрирован - как в Joomla, так и в пользователях вртуемарта. Выглядит, как будто у вирта своя копия пользователя, а в Joomla своя. И авторизуются они независимо друг от друга.

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

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #27 : 21.10.2011, 20:07:23 »
Такого расширения быть не может т.к у витра нет своих пользователей, то что ты видишь в вирте частично взято из данных Joomla, частично свое, то что не хватает в профиле Joomla.
*

4ort

  • Захожу иногда
  • 82
  • 0 / 0
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #28 : 21.10.2011, 21:01:20 »
Тогда почему после удачного залогивания, я не залоген в вирте оказываюсь ( "Я логинюсь через него нормально, то-есть вижу приветствие, имя и кнопку выхода, но когда в модуле логина вирта перехожу по ссылке "Управление учетной записью", то попадаю на форму ввода логина и пароля вирта. ")?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Loginza для Joomla 1.7 и 1.5
« Ответ #29 : 22.10.2011, 06:51:13 »
Это проблема модуля вирта.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 3, FaLang и вывод меток (тэгов)

Автор goga_pgasovav

Ответов: 4
Просмотров: 2374
Последний ответ 09.02.2022, 16:04:31
от Slava77
Joomla Quiz Deluxe

Автор Mick_20

Ответов: 1
Просмотров: 1496
Последний ответ 11.11.2020, 13:35:16
от Mick_20
JBETOLO — оптимизация вашего сайта на Joomla!

Автор wfedin

Ответов: 7
Просмотров: 9019
Последний ответ 25.12.2019, 16:38:22
от auto-teacher
Joomla Tags. Перенос тэгов на Joomla 3

Автор dron

Ответов: 11
Просмотров: 1984
Последний ответ 05.08.2019, 11:51:52
от dron
JEM Joomla event manager

Автор Andrew92

Ответов: 0
Просмотров: 4509
Последний ответ 16.08.2017, 05:49:42
от Andrew92