posts.create
,category.edit
などの静的権限を持つシステムと、実行時に作成できるロールは両方ともデータベースに格納されていますが、権限は(技術的にはそうではありません)変更される;そして、の関係はroles
にusers
ためN:M
であり、permissions
からroles
のために:私は要求ごとに私のデータベース・ロールを照会することにより、ACLのグラフを構築する必要があると思いますようZF2 - ダイナミックロールアプローチのACLリソース
、一目でそれが見て、 (それらが存在するだろう場合、またはミドルウェア)、ユーザーが実行を許可された場合、私はチェックしたい私のコントローラのアクションで、この時点まで
// Some class like AclService.php that should be called in Module.php
// ...
$roles = // query db for all roles and their permissions
foreach ($roles as $role) {
$acl->addRole($role->getName());
foreach ($role->getPermissions() as $permission) {
$acl->allow($role->getName(), null, $permission->getName());
}
}
:ACLインスタンスなど許可されたアクセス権に追加しますアクション:
// CategoryController
public function createAction() {
$user = // retrieve user from identity
if (! $acl->isAllowed($user->getRoles()->first(), null, 'categories.create')) {
// throw a 403 exception
}
}
まだ私が得意でないものはResource
はこのスキーマに適合します?私はここに何かを逃していますか
許可が細かくない場合には、というだけでcreate
のリソースが適していますか?
categories.createはリソースです。ユーザーはカテゴリコントローラの作成アクションにアクセスできます。それは文字列としてほとんど何でも表すことができます。 – Andrew