我正在为我的codeigniter应用程序使用Ion Auth,除了一件事情,其他所有东西看起来都不错。
我需要显示用户列表以及他们所在的组。如何在不建立自己的模型和对其进行查询的情况下检索特定用户的组ID。
[$this->ion_auth->user($id)->row();
不会检索组ID。
Ion Auth已更新并删除了最新版本的get_user函数。结果,下面的代码应返回已登录用户的当前组ID:
$this->ion_auth->get_users_groups()->row()->id
如果要获取特定用户的组ID,可以将用户ID传递到get_users_groups方法中。
获取对象:
$user_groups = $this->ion_auth->get_users_groups($user->id)->result();
获取组名:
$this->ion_auth->get_users_groups($data['id'])->row()->name;
就我而言:
$data['groups'] = $this->ion_auth->get_users_groups($data['id'])->row()
您可以查看有关获取用户组的官方文档:
我遇到了这个问题,因为我想在成功登录后将用户的group_id添加到会话中。如果有人感兴趣,这就是我的做法(一旦我设法弄清楚所有事情在哪里完成)。
在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;
}
现在它将数组写入名为group的会话,该数组是用户所属的所有组的列表。
我唯一要做的另一件事是修改Ion_auth.php中的注销功能(在应用程序/库中,以确保通过添加添加来取消设置组会话变量)>
$this->session->unset_userdata('groups');
到其他unset_userdata()语句的列表。
[我知道我可能应该扩展库/模型以保持内核不变,但是您可以接受我所做的并轻松地做到这一点。
希望这可以帮助某人。
Rob
尝试将其添加到ion_auth_model.php(或将查询放在其他地方)
在控制器中使用: