好吧,我来回答您的一个问题,如果您愿意的话,我目前正在使用“基于标志的”ACL。在我的用户表中,我有 3 个字段,分别称为已激活、员工、管理员。我在 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 则用户对需要完成的操作具有完全访问权限,否则只能读取。现在我不知道你必须编辑什么,所以我能提供给你的信息有点有限。