rbacシステムについて質問があります。私はそれをかなりよく理解していると思いますが、特別な場合についてもっと情報が必要です。
ユーザーではなくグループで自動起動を行いたいのですが。たとえば、グループ「HR」には人を作成する権限があります。そうすれば、このグループに参加する人なら誰でもそれを持っているでしょう。
もっと情報をあげましょう。
私のデータベースの一部:
そして、これは私のグループ階層の一部である可能性があります。
だから私が探しているのは、これは必須だろう、各グループがいくつかの自動化を持っているシステムです。人々は自分のグループと親グループの自動化を取得します(たとえば、「Forsys」の人々は「Forsys」、「R&D」、「Administration」の自動化を持っています)。
私が現時点で見ている解決策は、bizruleを使用することです。しかし、データベースにphpコードを書くのが良い考えかどうかはわかりません。グループ階層を更新すると(R&Dは管理ではなくRHを継承します)、データベースのbizruleを変更する必要があります。私はそれを試しました、そしてそれはうまくいきます、しかしあなたが見ることができるようにそれはたくさんのコードを必要とします。
$user = User::model()->with("people","people.groups")->findByPk(Yii::app()->user->id);
foreach($user->people[0]->groups as $group)
if($group->id == 2)
return true;
return false;
これは、ユーザーがグループに属しているかどうかを確認するためだけのものです(親グループと階層をチェックせずに)
もう1つの可能性は、たとえば次のような新しいテーブル「group_auth」を作成することです。
-Group_2には「managePerson」の役割があります
-Group_3には操作"deleteUser"があります...
そして、ユーザーがグループに追加またはグループから削除されるたびに、auth_assigmentテーブルの自動化を更新します。
この件について他の意見を聞きたいです。すべてのコメントをいただければ幸いです:)
読んでいただきありがとうございます。私を理解するのに苦労した場合は、私の英語をお詫びします。
マイケルS。