Применение прав для пользователя без релога

  • 5 Ответов
  • 262 Просмотров

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

*

Rrock

  • Новичок
  • *
  • 2
  • 0
Добрый день.  !
Помогите решить один вопрос.
Пользователь в группе Registred залогинен на сайте
Создаю новую группу доступа в корне Public Назовем ее Gamers
Создаю уровень доступа Gamer - Ставлю галочку группы Gamers
Создаю материал с доступом Gamer
Создаю пункт меню с доступом Gamer

Пользователь заходит на сайт. Данный пункт ему недоступен.
В это время в админке добавляю данного пользователя в группу Gamers. Сохраняю.

Пользователь обновив станицу, данный пункт не видит.
Пользователь делает релог и после этого все отображается.
А если удаляю пользователя из группы Gamers то пункт вместе с доступом к материалу опять же  пропадает только после релога.
Как можно решить данную проблему.
Нужно чтобы при изменении групп у пользователя сразу же пропадал и появлялся доступ, так как планируется  изменения уровней доступа выполнять при помощи компоненты (скриптами)
Спасибо

*

SeBun

  • Практически профи
  • *******
  • 3076
  • 186
  • @SeBun48
Вот кстати эта фишка реализована весьма криво. Например, я в админке. Что то там делаю. После этого ушел. Возвращаюсь. Нажимаю какую нибудь кнопку - действие выполняется, и только потом выдается форма авторизации.

В вашем случае, если правами будет управлять компонент, то допишите в нем удаление сессии пользователя при смене прав. Таким образом релог произойдет автоматически. По идее должно работать.
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Администрирование | Разработка
Ник занят

*

Rrock

  • Новичок
  • *
  • 2
  • 0
Подскажите как реализованы сессии в Joomla 3.4.4
Что где храниться.
Спасибо

*

SeBun

  • Практически профи
  • *******
  • 3076
  • 186
  • @SeBun48
таблица #__session
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Администрирование | Разработка
Ник занят

*

SeBun

  • Практически профи
  • *******
  • 3076
  • 186
  • @SeBun48
Хотя нет, я не прав, сорь. Забыл, что сессии могут хранится не только в базе. Вот статья, там рассказано, как работать с сессиями. Используется объект сессии:
Код: php
$session = JFactory::getSession();
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Администрирование | Разработка
Ник занят

*

b2z

  • Support Team
  • *****
  • 7450
  • 741
  • Разраблю понемногу
Как обновить данные текущего пользователя без его повторной авторизации

В комментах есть такое:
Цитировать
Если нужно также обновить группу, в которую входит пользователь, то надо добавить в код JAccess::clearStatics();
Иначе новые права доступа (authorised view levels) будут иметь эффект только после повторной авторизации

Лично я этот способ не проверял.