php - 如何让合适的人访问此功能?
问题描述
基本上每个用户都有一组基于他们的角色(管理员、经理、卖家等)的权限,他们都可以选择编辑他们的个人资料,但我希望管理员能够编辑每个人的个人资料。
编辑功能看起来像这样(我正在使用 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');
}
}
解决方案
登录用户时将角色存储在会话中并进行处理
例如
if($this->session->userdata('role') == 'admin'){
// Show admin folder files
}elseif($this->session->userdata('role') == 'normal_user'){
// Other user folder files
}
谷歌中有很多基于角色的库可用于 Codeigniter 常用库链接
推荐阅读
- twitter-bootstrap - 无法在不更改整个布局的情况下向 Bootstrap 网格添加边距
- python - 如何在列表中的每个对象中插入符号?
- drupal - 有没有办法让 Drupal 不在我的源代码中插入任何评论或 CDATA 标签?
- xml - Xquery - 声明一个函数来获取输入序列的 MAX 值
- c - 如何让我的来源等到按钮释放后再继续?
- python - 这个网站的价格是如何呈现的?
- php - 如何阻止垃圾邮件中的电子邮件
- ios - 如何在 Swift 中制作一个单词可点击的 UITextView?
- sql-server - 如何在“并行数据仓库”中使用 Null 输入参数创建存储过程?
- java - 运行多个 Firestore 查询并等待所有查询完成