3

私は SO を検索し、ACL、CodeIgniter、Role ベースなどのすべての組み合わせをグーグル検索し、コントローラーとメソッドへのアクセスを制御するための多くの優れた製品を見つけましたが、フィールドレベルの制御を提供するものについては空っぽになりました。

いくつか (phpgacl と zend acl) をダウンロードして、フィールド レベルのアクセス許可のニーズに合わせて簡単に変更できるかどうかを確認しました。時間をかけてゼロから作成する前に...

質問:ユーザーのログインに基づいて フィールド レベルの制限を許可するライブラリやベスト プラクティスはありますか?

具体的には、ユーザーの AD グループ メンバーシップに応じて、次のいずれかのフォーム フィールドを作成しようとしています。

  • 表示されません
  • 表示されるが読み取り専用
  • 編集可能にする

ところで、AD グループのメンバーシップはセッション変数で既に利用可能であるため、必ずしもそのビットは必要ありません。私はこれを ACL と役割ベースの両方としてタグ付けしました。違いについて別の議論を始めるためではありませんが、パッケージが私のニーズを満たしていれば、どちらの方法でも構わないからです。

4

1 に答える 1

0

あなたの質問の 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 の場合、ユーザーは実行する必要があるものへの完全なアクセス権を持ち、それ以外の場合は読み取りのみを指定できます。今、あなたが何を編集しなければならないかわからないので、私があなたに提供できる情報はちょっと限られています.

于 2013-02-17T03:15:06.740 に答える