CakePHP 2.1.3 ACL コンポーネントを使用しています。管理者、管理者、編集者、登録ユーザーの 4 つのグループを作成しました。ユーザー管理モジュールの場合、以下にリストされているようにアクセスを提供したい:
管理者 -> すべての
管理者 -> 編集者および登録ユーザーの
追加、編集、削除 編集者 -> 登録ユーザーの追加、編集、削除 登録
ユーザー -> なし。
ACL と認証コンポーネントでこれを達成できますか? そうでない場合は、他の方法を提案してください。
CakePHP 2.1.3 ACL コンポーネントを使用しています。管理者、管理者、編集者、登録ユーザーの 4 つのグループを作成しました。ユーザー管理モジュールの場合、以下にリストされているようにアクセスを提供したい:
管理者 -> すべての
管理者 -> 編集者および登録ユーザーの
追加、編集、削除 編集者 -> 登録ユーザーの追加、編集、削除 登録
ユーザー -> なし。
ACL と認証コンポーネントでこれを達成できますか? そうでない場合は、他の方法を提案してください。
はい、それはACLで可能です。ACLにはさらに多くの可能性があります。
John Wisemanによって書かれたACLについての素晴らしいチュートリアルもあります。おそらく、これを最初に読む必要があります。
これは可能ですが、Acl はそのようなパーミッションを処理するにはやり過ぎです。Auth の ControllerAuthorize アダプターを使用し、UsersControllerisAuthorized()
に次の行に沿ってメソッドを配置するだけです。
public function isAuthorized($user) {
$userGroup = $user['User']['group'];
if ($userGroup == 'admin' || in_array($this->action, array('index', 'view'))) {
return true;
}
if ($userGroup == 'registered') {
return false;
}
if ($this->action == 'add') {
return true;
}
if (in_array($this->action, array('edit', 'delete'))) {
$id = $this->request->params['pass'][0];
$group = $this->User->field('group', array('User.id' => $id));
if ($group == 'registered') {
return true;
}
if ($group == 'editor' && $userGroup == 'moderator') {
return true;
}
}
return false;
}
add アクションはここでは処理されず、常に許可されます。ログインしているユーザーに基づいて、新しいユーザーを追加するときに、グループを設定するオプションを少なくする必要があります。インデックスとビューの処理方法については言及していませんが、すべてのユーザーがそれを許可されていると思います。