Я столкнулся с этим, потому что хотел добавить идентификатор группы пользователя в сеанс после успешного входа в систему. Если кому интересно, вот как я это сделал (однажды мне удалось выяснить, где все делается).
В ion_auth_model.php я взял функцию set_session:
public function set_session($user)
{
$this->trigger_events('pre_set_session');
$session_data = array(
'identity' => $user->{$this->identity_column},
'username' => $user->username,
'email' => $user->email,
'user_id' => $user->id, //everyone likes to overwrite id so we'll use user_id
'old_last_login' => $user->last_login
);
$this->session->set_userdata($session_data);
$this->trigger_events('post_set_session');
return TRUE;
}
и изменил его на это:
public function set_session($user)
{
$this->trigger_events('pre_set_session');
$session_data = array(
'identity' => $user->{$this->identity_column},
'username' => $user->username,
'email' => $user->email,
'user_id' => $user->id, //everyone likes to overwrite id so we'll use user_id
'old_last_login' => $user->last_login
);
//get user group ids for user and pass to session
$groups = $this->ion_auth->get_users_groups($user->id)->result();
foreach ($groups as $row){
$session_data['groups'][] = $row->id;
}
$this->session->set_userdata($session_data);
$this->trigger_events('post_set_session');
return TRUE;
}
теперь он записывает массив в сеанс с именем groups, который представляет собой список всех групп, к которым принадлежит пользователь.
Единственное, что мне нужно было сделать, это изменить функцию выхода из системы в Ion_auth.php (в приложении/библиотеках), чтобы убедиться, что переменная группового сеанса не установлена, добавив
$this->session->unset_userdata('groups');
в список других операторов unset_userdata().
Я знаю, что мне, вероятно, следовало бы просто расширить библиотеки/модели, чтобы сохранить ядро нетронутым, но вы могли бы взять то, что я сделал, и легко сделать это.
надеюсь, это поможет кому-то.
Роб
person
rob s
schedule
06.03.2013