我搜索了SO,搜索了ACL,CodeIgniter,基于角色等的每个组合,并且已经找到了许多用于控制对控制器和方法的访问的好产品,但是对于能够进行字段级控制的东西却是空的。 / p>
我下载了一对(phpgacl和zend acl),看看是否可以轻松修改它们以满足我对字段级权限的需求。所以在我花时间从头开始制作之前......
问题:是否有库和/或最佳做法允许基于用户登录的字段级限制?
具体来说,我希望根据用户的AD组成员身份,使用表单字段:
顺便说一下,AD组成员资格已经在会话变量中可用,所以我不需要这一点。我已将其标记为ACL和基于角色的,不是为了开始关于差异的另一个讨论,而是因为如果软件包符合我的需要,我愿意采取任何一种方式。
答案 0 :(得分:0)
好吧,我回答你的一个问题,我现在正在使用“基于标志”的ACL,如果你愿意的话。在我的用户表中,我有3个字段,名为Activated,Staffmember,Admin。我在2个不同的模型中运行3个查询,以检查是否提供了登录凭据
WHERE staffmember = 1
WHERE Admin = 1
WHERE activated = 1
如果返回记录,则将其转换为返回值。
这是我的if else语句来决定谁看到了什么:
function index()
{
$this->load->model('staff_model'); // loads model that queries if username is associated with a admin or staff account
if($staffmember = $this->staff_model->staffmember()) //Checks for staff value == 1
{
if($is_admin = $this->staff_model->is_admin()) // Checks for admin value == 1
{
redirect('admin_controller/index'); // redirects to what the admin will see (the admin pages, add users, delete users, deactivate users, this way I set up a sorta CMS type system
}else{ // If not admin == 1 meaning it can be a staff member == 1
$data['main_content'] = 'staff_homepage_view'; //sets up template for staff member
$this->load->view('includes/template', $data); // this will then load the view for staff member
}
}else{ // If not staff == 1 // then if it is not staff member it will load the view for a no permission account in this case : student
$data1['main_content'] = 'student_homepage_view';
$this->load->view('includes/template', $data1);
}
}
如果你需要看模特让我知道。但通过这种方式,我可以通过数据库中的帐户标记设置用户可以看到的内容。
这样,管理员也必须是工作人员,这样激活的无权限帐户就不能成为员工或管理员。
然后,您可以在用户表中设置一个名为“编辑”
的字段然后在控制器中,您可以指定Edit = 1,然后用户可以完全访问需要完成的操作,否则只能读取。现在我不知道你要编辑什么,所以我对我能提供的信息有限。