Новости Joomla

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

Страница расширения
GitHub расширения

@joomlafeed

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

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Общий привет!
Есть такая необходимость, чтобы при регистрации нового пользователя (joomla 2.5) в таблицу #__users добавить еще один столбец и внести туда запись.
Добавить еще столбец особых проблем не вызывает, выполнить sql-запрос тоже, только вот куда именно надо прописать этот самый sql-запрос? Пожалуйста, подскажите, как мне добавить еще одну запись для нового юзера?
Кстати, необходимые уточнения.
Название нового столбца принципиального значения не имеет, для примера можно обозвать example, а вот значение, вносимое в этот столбец - это
Код
base64_encode($password)
Причем, $password - это не хеш, а чистое значение пароля, которое юзер вбивает в поле регистрации.
Ну здесь понятно, что после проверки
Код
if (jform[password1] == jform[password2]){
$passw = base64_encode($password);
sql = "INSERT INTO `#__users` (`example`) VALUES (`$passw`)"; // здесь выполняется вставка значение в столбец
}
Только где все это дело прописать?
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Решается на самом деле просто, но с этической точки зрения и с точки зрения безопасности не надо бы этого делать.

Или вы хотите сделать клон одноклассников и заняться фишингом паролей? ;)

Да и без клонов - с учётом того что более 70% юзеров используют одни и те же пароли, в том числе и для email, на всех подряд сайтах - как-то неприлично.

*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Дело в том, что на одном домене с joomla2.5 на поддомене установлен другой скрипт (е-мейл рассылок). При регистрации нового пользователя на Joomla, мне необходимо, чтобы этот пользователь смог зайти в свой аккаунт в скрипте рассылок под этими же самыми логином и паролем. Причем, новая запись в таблицу #__users должна вводиться автоматически.
Я думаю, что эта необходимость вполне этически выглядит.
Что касается безопасности. Здесь просто нет выбора. После некоторых раздумий, я пришел к выводу, что по идее можно как-то вытащить пароль вновь созданного юзера из базы, но так ведь там хэш!.  Но мне ведь нужен именно пароль, вводимый в поле при регистрации. Необходимость заставляет использовать base64_encode.
Дальнейший ход этих действий такой - я извлекаю из базы запись, пропускаю ее через
Код
base64_decode
и получаю пароль в чистом виде. А затем уже вношу этот пароль, после некоторых преобразований, в соответствии с требованиями скрипта почтовых рассылок, в базу, в таблицу пользователей этого самого скрипта.
Вот!
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Вообще корректнее бы было реализовать этот ваш скрипт как компонент Joomla и не разводить субдомены с посторонними скриптами.
А что касается пароля при регистрации - он же не по пути от браузера пользователя до сайта хешируется )

Смотрите в сторону плагина группы user - на некоторые события при регистрации он передаётся в плагин в незашифрованном виде.
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Что касается того, чтобы сделать этот скрипт как компонент, то там 20 МБ кода (там кода чем у Joomla более, чем в три раза).
А что касается плагина группы  user
то я нашел там функции onUserAfterDelete, onUserAfterSave, onUserLogin и onUserLogout
а куда именно там вставлять, мозгов не хватает.
В общем я представляю так.
Где-то надо перехватить пост-запрос, переопределить переменную пароля и добавить параметр для вставки в таблицу базы.
Но, е-мое, башка не варит, в какой именно функции там это можно сделать.
Пожалуйста, разжуйте слегка!
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Плагин user/joomla посмотрите и найдёте всё что вам нужно
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Кстати, можно бы было и другим путём пойти - нафига перехватывать пароли и писать их в базу в практически открытом виде, когда можно было бы в том скрипте реализовать такой же алгоритм хеширования и проверки хеша как в Joomla

И тогда вам остаётся просто копировать логины и хеши из базы Joomla в ту базу.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Гораздо проще проверять наличие ид и по его присутствию делать запрос. Исключив тем самым двойную идентификацию
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Юзера естественно. Если есть значит пользователь зарегистрирован в системе и делать запрос в другую базу или таблицу
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Юзера естественно. Если есть значит пользователь зарегистрирован в системе и делать запрос в другую базу или таблицу

А откуда этот ID взять?
У ТС задача чтобы юзер логинился на субдомене. Вот он идёт на субдомен и пытается там логиниться.
Что дальше?
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Цитировать
Кстати, можно бы было и другим путём пойти - нафига перехватывать пароли и писать их в базу в практически открытом виде, когда можно было бы в том скрипте реализовать такой же алгоритм хеширования и проверки хеша как в Joomla

И тогда вам остаётся просто копировать логины и хеши из базы Joomla в ту базу.
очень мудрое решение...!
...
Но я не смог найти (или не хотел), (хотя я искал) этот механизм в Joomla.
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
plugins\authentication\joomla\joomla.php
libraries\joomla\user\helper.php
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Копируете данный код в файл register.php файл записываете в корень сайта. (Тестовое решение, проблемы с безопасностью)
Теперь, чтобы пользователь был авторизован, достаточно вызвать ваш домен/register.php?userid=837 где 837 ид авторизованного пользователя
Спойлер
[свернуть]
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Теперь, чтобы пользователь был авторизован, достаточно вызвать ваш домен/register.php?userid=837 где 837 ид авторизованного пользователя

1) у ТС на субдомене не Joomla
2) а если бы была - таким образом любой посторонний или бот может подбирать id и авторизовываться

Если уж делать синхронизацию "залогиненного" состояния - то при авторизации и не http запросами, а работая непосредственно с базой.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
При регистрации нового пользователя на Joomla, мне необходимо, чтобы этот пользователь смог зайти в свой аккаунт в скрипте рассылок под этими же самыми логином и паролем.
Т. есть я как понимаю регистрация на субдомене произведена. Тогда почему к регистрации на субдомене не прикрепить автоматическую регистрацию пользователя Joomla в основном домене
2)Тестовое решение, проблемы с безопасностью
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Изначально же в условии - первичная регистрация на основном домене где Joomla
Параллельно - синхронизация базы пользователей субдомена, где самописное что-то.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Ух тогда так.
Пишем плагин регистрации. При регистрации:
1. получаем e-mail зарегистрированного
2. Делаем запрос на субдомен с выборкой логина пароля
3. Записываем юзера
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Fedor Vlasenko
Цитировать
Ух тогда так.
Пишем плагин регистрации. При регистрации:
1. получаем e-mail зарегистрированного
2. Делаем запрос на субдомен с выборкой логина пароля
3. Записываем юзера
Большое спасибо, конечно, за помощь, но, действительно, здесь задачка немного другая.
На поддомене установлен совершенно другой скрипт (не joomla), но основоном домене стоит Joomla.
Мои клиенты регистрируются на основном сайте (joomla) и после этого, могут войти в аккаунт того - другого скрипта, под тем же логином и паролем.

Г-н SDKiller все правильно понял.

Только вот дело за малым осталось. Не ложиться спать, пока не допилю плагин user/joomla
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
могут войти в аккаунт того - другого скрипта
вот откуда там данные(логин и пароль) в другом скрипте?
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
логин вытаскивается из базы #__users и вставляется в базу того - другого скрипта.
Вот с паролем здесь посложней.
Хеш, сохраненный в базе #__users обратно расшифровать - большая проблема, поэтому мне необходимо, где-то перехватить этот пароль, пока он не превратился в хэш, переопределить переменную и выполнить вставку этого пароля в базу того скрипта (другого).
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
пишите плагин группы user обрабатывайте событие
public function onUserAfterSave($user, $isnew, $success, $msg){}
в $user будет ваш пароль не зашифрованный
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Я никогда в жизни не писал плагинов........
Но... видимо, когда то надо начинать пробовать.
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Простыми словами, на существующем плагине внутри функции onUserAfterSave
есть то, что мне нужно?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
вставьте там строку и зарегистрируйтесь
var_dump($user); //или
die (var_dump($user));
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
я попозже отвечу.... дела возникли
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Fedor Vlasenko !
Спасибо за реальную помощь!
Все-таки я поймал мышку за хвост.
А мышка пряталась в
[password_clear] =>
*

rafaello9

  • Захожу иногда
  • 152
  • 2 / 0
Тут новый арбуз выкатился!
В силу сложившихся обстоятельств я пошел на такое решение, что добавил еще один столбец в таблицу #__users и сохраняю там необходимые данные.
В момент активации / деактивации в дополнительном столбце таблицы #__users удаляются сохраненные там данные.

Как то можно сделать так, чтобы
при активации / деактивации юзера
не удалялись данные из этого столбца?



Все, проблема решилась перестановкой столбца в самый конец!
« Последнее редактирование: 20.06.2013, 23:06:14 от rafaello9 »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
пиши в params, он в json, пример you_data
Код: php-brief
 $user = JFactory::getUser();
        $params = json_decode($user->params, true);
        $params['you_data'] = 'NeW data';
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->update('#__users')->set('params=' . $db->Quote(json_encode($params)))->where('id=' . $user->id);
        $db->setQuery($query)->query();
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить много меток сразу?

Автор Sergeyy

Ответов: 1
Просмотров: 1248
Последний ответ 10.12.2018, 16:49:03
от Sergeyy
Выбор пользователя в модальном окне в админке

Автор orexov_m

Ответов: 0
Просмотров: 1299
Последний ответ 11.04.2017, 11:35:43
от orexov_m
Добавить проверку в форму регистрации

Автор apsorry

Ответов: 3
Просмотров: 1589
Последний ответ 08.01.2016, 15:40:02
от apsorry
Добавить класс каждому li

Автор xenos

Ответов: 6
Просмотров: 1870
Последний ответ 15.04.2015, 09:14:47
от xenos
Как понять в каком случае плагин производит запись в бд?

Автор maxis

Ответов: 34
Просмотров: 3346
Последний ответ 27.01.2015, 08:23:51
от maxis