Изменение группы пользователям программныи путем без перелогинизации

Тема в разделе "Программирование", создана пользователем FeaMor, 15.09.2013.

  1. FeaMor
    Offline

    FeaMor Пользователь

    Регистрация:
    01.09.2008
    Сообщения:
    104
    Симпатии:
    2
    Пол:
    Мужской
    Здравствуйте!

    Я создал несколько подгрупп Registered и меняю их программным путем, типа если что-то там подключается пользователю, то у него меняется группа с "9" (например "Клиент") на, допустим "11" (например "Золотой клиент").

    Делаю я это с помощью прямого обращения в базу меняю "group_id" у таблицы "#__user_usergroup_map":
    Код (PHP):
    1. $db =& JFactory::getDBO();
    2. $query = '
    3. UPDATE `#__user_usergroup_map` SET `group_id` = '.$mgroups.'
    4. WHERE `user_id` = '.$muser_id.'
    5. AND `group_id` = '.$mgroup_id.';';
    6. $db->setQuery($query);
    7. $db->Query();

    где переменные $mgroups - номер группы, которая стала (11)
    $muser_id - ID пользователя, которому меняю группу (883)
    $mgroup_id - номер группы, которая была раньше (9)
    все переменные защищены от инъекций

    Все прекрасно работает, но дело в том, что система не видит смену группы, до переавторизации, т.е. надо выйти и зайти снова. Это крайне неудобно ((
    На сколько я понял, это либо какой-то кэш, либо хранится сессия... Я попробовал сбросить сессию командой "session_destroy ()" и теперь автоматом выбрасывает на повторную авторизацию, что работает, но тоже не удобно (

    Вот вопрос, как обновить сессию, чтобы пользователь не приходилось авторизовываться заново?

    Для всякого я посмотрел, что именно меняется в поле "data" таблицы "#__session":
    вот что было до переавторизации:
    Код (CODE):
    1. __default|a:9:{ ... O:5:"JUser":43:{ ... s:6:"groups";a:1:{[b]i:9[/b];[b]s:1:"9"[/b];} ... s:14:"\0*\0_authGroups";a:3:{i:0;i:1;i:1;i:2;i:2;[b]i:9[/b];} ... } ... } ...

    Вот что стало:
    Код (CODE):
    1. __default|a:9:{ ... O:5:"JUser":25:{ ... s:6:"groups";a:1:{[b]i:11[/b];[b]s:2:"11"[/b];} ... s:14:"\0*\0_authGroups";a:4:{i:0;i:1;i:1;i:2;i:2;i:9;i:3;[b]i:11[/b];} ... } ... }

    где "..." - много всякой каки-бяки

    может как-то можно в сессии поменять параметры, но где и что меня я не знаю ((

    Как же после смены группы в базе, пользователю без перезагрузки ее присвоить?
     
  2.  

Поделиться этой страницей

Загрузка...