【发布时间】:2020-03-11 10:32:43
【问题描述】:
基本上每个用户都有一组基于其角色(管理员、经理、卖家等)的权限,并且他们都可以选择编辑他们的个人资料,但我希望管理员能够编辑每个人的个人资料。
编辑功能看起来像这样(我正在使用 Codeigniter)
function edit($id)
{
if(!in_array('editUser'))
{
redirect('home');
}
//rest of the code...
}
首先想到的是检查尝试编辑页面的用户的会话 id 是否与正在编辑的用户的 id 相同,但这会使管理员无法编辑每个人的个人资料。
希望我今天能得到答复,谢谢您的帮助。
编辑
我通过添加另一个条件并反转它们来解决此问题:
function edit($id)
{
if(in_array('editUser', $perms) || $this->session->userdata('id') == $id)
{
//rest of the code...
}else{
redirect('home');
}
}
【问题讨论】:
-
我也可以添加一个全新的功能,它会做同样的事情,但会被指定为 2 个不同的角色(管理员和所有其他角色),但我不喜欢这个想法
-
你可以编写一个函数来检查试图编辑页面的用户的 id 是否与正在编辑的用户的 id 相同,或者当前用户的 ID 是否在管理员的角色。
-
我试过 if(!in_array('editUser', $perms) || $this->session->userdata('id') != $id) 但没用
标签: php codeigniter permissions logic