2017-01-10 10 views
0

posts.create,category.editなどの静的権限を持つシステムと、実行時に作成できるロールは両方ともデータベースに格納されていますが、権限は(技術的にはそうではありません)変更される;そして、の関係はrolesusersためN:Mであり、permissionsからrolesのために:私は要求ごとに私のデータベース・ロールを照会することにより、ACLのグラフを構築する必要があると思いますようZF2 - ダイナミックロールアプローチのACLリソース

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のリソースが適していますか?

+1

categories.createはリソースです。ユーザーはカテゴリコントローラの作成アクションにアクセスできます。それは文字列としてほとんど何でも表すことができます。 – Andrew

答えて

0

あなたは$acl->addRole($role->getName());を使用していますが、ドキュメント化のとおり、リソースで定義する必要があります。

これが役に立たない場合は、私が助けてくれることを教えてください。

関連する問題