Форум русской поддержки Joomla!® CMS
08.12.2016, 22:15:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Неправильно работает плагин "Аутентификация - Cookie", не пускает юзера в персональный кабинет

 (Прочитано 731 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kolio
Осваиваюсь на форуме
***

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

Сообщений: 92


« : 12.08.2014, 12:32:00 »

Привет всем
столкнулся такой бедой

1. если залогены на фронтэнде, то разлогиниваемся и чистим куки, закрываем браузер, открываем - для чистого теста
2. логинимся - входим в редактирование своего профиля - пускает, всё работает
3. просто закрываем страницу и браузер
4. запускаем браузер и входим на сайт. по идее куки запомнены и должны автоматом продолжить юзать сайт под те же логином - так и происходит
5. перешагивая по страницам видно, что залогены нормально
6. нажимаем снова на ссылку редактирования профиля и получаем вот что (см. фото)
7. пробовал отключать кеширование, отключать ЧПУ - всё аналогично, аналогичная картина четко наблюдается и на локальном сервере
8. если снова разлогиниться и снова войти - то пускает в профиль, даже не перезапуская браузер
9. что то или с куками или с сессиями, непонятно  Cry
10. если после неудачной попытки войти в профиль нажать НАЗАД, то выдаст кучу
Код:
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
Из соображений безопасности вам необходимо авторизоваться для редактирования вашей персональной информации.
в общем фраза JGLOBAL_REMEMBER_MUST_LOGIN
10. по исходнику нашел кто генерит её:
components\com_users\views\profile\view.html.php
функция public function display($tpl = null)
строки

Код:
// View also takes responsibility for checking if the user logged in with remember me.
$user = JFactory::getUser();
$cookieLogin = $user->get('cookieLogin');

if (!empty($cookieLogin))
{
// If so, the user must login to edit the password and other data.
// What should happen here? Should we force a logout which detroys the cookies?
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('JGLOBAL_REMEMBER_MUST_LOGIN'), 'message');
$app->redirect(JUri::base(). 'index.php?option=com_users&view=login', '', 302);

return false;
}

возможно у кого-то аналогичная проблема была?


* Без имени-1.jpg (372.59 Кб, 1836x1040 - просмотрено 255 раз.)
Записан
SmokerMan
Профи
********

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

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



« Ответ #1 : 12.08.2014, 12:53:56 »

Это вроде как дополнительная защита перед редактированием данных
А вообще не понятно что этот кусок делает в виде. Т.к. в контролере в методе edit он есть.
Т.е. по логике его тут не должно быть, похоже на баг

Записан
kolio
Осваиваюсь на форуме
***

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

Сообщений: 92


« Ответ #2 : 12.08.2014, 13:03:56 »

Пока решил отключить лишние плагины
Уже вижу, что нет такой беды, но просит ввести логин и пароль - то есть отображает формочку входа в сайт
но при этом модуль     Improved AJAX Login and Register  показывает, что я залогинен

возможно это связано с тем, что я логинюсь не юзая имя, а почтовый адрес
видать беда в компоненте Improved AJAX Login and Register
Записан
kolio
Осваиваюсь на форуме
***

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

Сообщений: 92


« Ответ #3 : 12.08.2014, 13:05:42 »

Это вроде как дополнительная защита перед редактированием данных
А вообще не понятно что этот кусок делает в виде. Т.к. в контролере в методе edit он есть.
Т.е. по логике его тут не должно быть, похоже на баг

Возможно, сейчас убираю все плагины и хочу чистый тест провести без примесей

без этого куска кода ВСЁ РАБОТАЕТ
на живом сайте тоже всё окей даже без отключения плагинов

один и тот же код в разных местах: один на редактирование, другой на display, но по факту ведут в одно и то же место

но самое интересное, что в edit там есть проверка
Код:
$app = JFactory::getApplication();
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Get the previous user id (if any) and the current user id.
$previousId = (int) $app->getUserState('com_users.edit.profile.id');
$userId     = $this->input->getInt('user_id', null, 'array');

// Check if the user is trying to edit another users profile.
if ($userId != $loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

а в view.html.php этого нет

думаю закоментить то, что выдает ошибку, а вместо него добавить код который выше
« Последнее редактирование: 12.08.2014, 13:14:25 от kolio » Записан
kolio
Осваиваюсь на форуме
***

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

Сообщений: 92


« Ответ #4 : 12.08.2014, 13:22:16 »

В общем сделал так:
Код:
$app = JFactory::getApplication();
// View also takes responsibility for checking if the user logged in with remember me.
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Check if the user is trying to edit another users profile.
if (!$loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

можно было бы 1 строку сократить, но не столь важно
если разлогинился, то не пускает по адресу http://127.0.0.1/kabinet/profile?layout=edit
залогинился - пускает и отображает данные

думаю тема закрыта, спасибо собеседнику за поддержку и за то, что сказал, что это возможно баг
Записан
ipdj
Захожу иногда
**

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

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


« Ответ #5 : 24.01.2016, 14:04:32 »


но самое интересное, что в edit там есть проверка
Код:
$app = JFactory::getApplication();
$user = JFactory::getUser();
$loginUserId = (int) $user->get('id');

// Get the previous user id (if any) and the current user id.
$previousId = (int) $app->getUserState('com_users.edit.profile.id');
$userId     = $this->input->getInt('user_id', null, 'array');

// Check if the user is trying to edit another users profile.
if ($userId != $loginUserId)
{
JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
return false;
}

а в view.html.php этого нет


Подскажите где лежит edit?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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