madlines / common-security-resolver
基于投票器的简单访问解析器
1.1
2016-02-27 15:01 UTC
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: 4.2.*
This package is not auto-updated.
Last update: 2024-09-14 17:26:49 UTC
README
这是一个非常简单的基于投票器的安全解析器。它获取一组以中间件方式工作的投票者列表,并公开一个isGranted
方法,可以询问投票者用户是否可以执行指定的任务。
投票者不需要实现任何接口。为了使这个库更通用,它使用鸭子类型。投票者需要是对象,并实现一个名为您喜欢的公共方法。
任务可以是任何您喜欢的。这些可以是对象或只是字符串。这取决于您的投票者是否支持它。
用法
准备一个这样的投票者
<?php class PostEditVoter { public function isGranted($user, $task) { // if (!($task instanceof PostEditTask)) { if ($task !== 'post_edit') { return null; // null means 'ignore' // returning integer 0 means the same } if ($user->hasRole('ROLE_ADMIN')) { return true; // agree // returning integer 1 means the same } return false; // disagree // returning integer -1 means the same } }
创建一个AccessResolver
实例并向其中添加投票者
$postEditVoter = new PostEditVoter(); // create more voters if you like $resolver = new AccessResolver(); $resolver->addVoter($postEditVoter); // You can pass method name as second parameter. It defaults to `isGranted` // add more voters if you like
从某处获取您的用户
$user = $this->getUser();
并像这样请求权限
$resolver->isGranted($user, 'post_edit'); // or maybe $resolver->isGranted($user, $postEditTask);