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

__TheDrummer__

  • Новичок
  • 4
  • 0 / 0
Доброго времени суток!

Просьба сильно не пинать новичка, но откровенно ничего не нагуглил...
Предыстория: пишу компонент, который должен работать в духе web сервиса
Клиент работает с компонентом через XML-PRC. Есть три метода:
1. Login - клиент передает логин, пароль и в ответ должен получить id сессии.
2. Submit - клиент передает id сессии, полученный при логине и данные для сабмита
3. Logout - клиент передает id сессии.

Вопрос 1: можно ли использовать какой-нибудь готовый класс/метод которому на вход отдать креденшелы а на выходе получить результат логина (неверный пароль или логин/заблокированный пользователь/успешно) и созданную сессию из которой можно выдрать id для возврата клиенту при успешном логине? В идеале, если пользователь с такими парметрами уже залогинен, то просто вернуть его сессию, если она еще не протухла.

Вопрос 2: как в в остальных двух методах восстановить залогиненное состояние по id сессии? чтобы в логике методов уже оперировать объектом JSession и всеми остальными стандартными объектами, которые содержать данные о текущем пользователе и проч.
*

__TheDrummer__

  • Новичок
  • 4
  • 0 / 0
Так все сложно? Или знающие форумчане еще отходят от Нового Года? :)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Я не совсем понимаю в разработки веб сервисов, но как я понимаю у вас будет приложение которое будет стучаться в Joomla?
Ну вам наверно нужно создать компонент-прослойку, в котором банально:
Код: php
$user = JFactory::getUser();
if(!$user->guest){
return $user;
}
А дальше пробуем программно авторизировать юзера если есть данные
$input = JFactory::getApplication()->input;
$credentials = array( 'username'=>$input->get('login'), 'password'=>$input->get('password'));
// установка запоминания пользователя
$options = array( 'remember'=>true );
//выполняем авторизацию
if( JFactory::getApplication()->login( $credentials, $options )){
    echo 'Вы успешно авторизированны';
}
*

__TheDrummer__

  • Новичок
  • 4
  • 0 / 0
Идея отличная, но проблема в том, как $user = JFactory::getUser(); узнает что-либо о пользователе? При работе с сайтом там есть сессии, которые поддерживаются при помощи передачи  id сессии в куках (как я понимаю). В моем случае этого всего нету. Есть каждый раз новый запрос без каких-либо куков. Единственное что я могу это передавать внутри своих данных айдишник сессии (который я сам себе верну  при успешном логине) в свой скрипт, чтобы используя его как-то попытаться восстановить свое состояние в переменных окружения.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
ну смотрите после авторизации сессия о юзере хранится в таблице #__session
там же и хранится ID Сессии!
что бы получить id текущей сессии есть такая конструкция:
Код: php
$session = JFactory::getSession();
echo $session->getId();
возвращаете ID Сессии, по id этой сессии можно получить в таблице #__session id авторизированного юзера!
и по этому id выбрать из таблички #__users данные о нашем пользователе!
*

__TheDrummer__

  • Новичок
  • 4
  • 0 / 0
Ну да, это понятно что вручную через базу можно все это узнать и вытащить. Но это же неправильно.

Хотелось бы как-то восстановить сессию по sessionID и после этого уже по человечески общаться с Joomla в духе:
Код: php
//magic code to restore Joomla session
$user = JFactory::getUser();
if (!$user->guest) {
   // do some work with authorized user
}
« Последнее редактирование: 05.01.2014, 15:02:58 от __TheDrummer__ »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Код: php
$user = JFactory::getUser();
$user->load(962);

962 - это id юзера который вы вытаскиваете из #__session после этой операции юзер авторизируется, и вы получите все данные юзера!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Что хранится в таблице overrider Joomla 3?

Автор web1

Ответов: 2
Просмотров: 195
Последний ответ 04.04.2024, 22:10:48
от web1
reCAPTCHA V2 Google - Для Joomla 3

Автор Alex GOOD

Ответов: 35
Просмотров: 8335
Последний ответ 10.01.2024, 21:41:38
от Vastriet
Joomla 3.10.12 и MySQL 8

Автор designer71

Ответов: 0
Просмотров: 396
Последний ответ 19.10.2023, 11:25:18
от designer71
Почему Joomla не поддерживает формат webp?

Автор Sensession

Ответов: 74
Просмотров: 10620
Последний ответ 03.10.2023, 19:44:42
от fsv
erid в Joomla

Автор newalex

Ответов: 0
Просмотров: 321
Последний ответ 25.09.2023, 18:45:34
от newalex