あなたの質問の 1 つに答えるために、私は現在「フラグ ベースの」ACL を使用しています。ユーザー テーブルには、Activated、Staffmember、Admin という 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 の場合、ユーザーは実行する必要があるものへの完全なアクセス権を持ち、それ以外の場合は読み取りのみを指定できます。今、あなたが何を編集しなければならないかわからないので、私があなたに提供できる情報はちょっと限られています.