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