ポリシーリゾルバー
ポリシーリゾルバーは、リソースオブジェクトと対応する policy クラスを 結びつけます。必要に応じて独自の resolver を実装できます。
組み込みの resolver:
MapResolverOrmResolverResolverCollection
MapResolver を使う
php
use Authorization\Policy\MapResolver;
$mapResolver = new MapResolver();
$mapResolver->map(Article::class, ArticlePolicy::class);
$mapResolver->map(Article::class, new ArticlePolicy());
$mapResolver->map(Article::class, function ($resource, $mapResolver) {
// Return a policy object.
});1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
OrmResolver を使う
OrmResolver は CakePHP ORM 用の規約ベース resolver です。
- policy は
App\Policyに置きます。 - policy クラス名は
Policyで終わります。
例:
App\Model\Entity\Bookmark->App\Policy\BookmarkPolicyApp\Model\Table\ArticlesTable->App\Policy\ArticlesTablePolicy
php
use Authorization\Policy\OrmResolver;
$appNamespace = 'App';
$overrides = [
'Blog' => 'Cms',
];
$resolver = new OrmResolver($appNamespace, $overrides);1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
ResolverCollection を使う
php
use Authorization\Policy\MapResolver;
use Authorization\Policy\OrmResolver;
use Authorization\Policy\ResolverCollection;
$resolver = new ResolverCollection([
new MapResolver(),
new OrmResolver(),
]);1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Resolver を作成する
独自の実装が必要な場合は Authorization\Policy\ResolverInterface を 実装して getPolicy($resource) を定義します。