smarch / omac
一个简单的 ACL 特性,允许使用所需的任何授权包进行授权检查。目前支持 Laravel 默认、Shinobi、Sentinel 和 Entrust。
Requires
- php: >=5.5.9
This package is not auto-updated.
Last update: 2024-09-14 17:37:25 UTC
README
这可能只对我有用,但我在多个应用程序中都需要它,所以我打包了一下,以防你也需要。 :)
OMAC
一个简单的特性,允许使用所需的任何授权包进行 基本 授权检查。目前支持 Laravel 默认、Shinobi、Sentinel 和 Entrust。
安装
安装使用 composer 进行。
🔲 Composer
composer require "smarch/omac"
使用方法
在你希望使用 OMAC 检查访问的地方添加该特性。
class YourController extends Controller
{
use \Smarch\Omac\OmacTrait;
一旦使用 OmacTrait,并且你对所使用的授权驱动器满意 (见以下参数),你可以通过传递所需权限来使用 Omac 的 checkAccess()
方法以允许访问。
使用 OMAC 允许查看资源索引的示例
/**
* Display a listing of the resources.
*
* @return Response
*/
public function index()
{
if ( $this->checkAccess('view.index') ) {
$resources = Model::all();
return view("index", compact($resources) );
}
return view("unauthorized", ['message' => 'Not authorized to view Index'] );
// OR
return false;
// OR
abort(401, 'Unauthorized action.');
}
参数
checkAccess()
方法接受 $permission 和 $arguments 变量。所以如果你的首选授权包在其方法中接受第二个参数,你可以使用它。
if ( $this->checkAccess('update.post', $post) ) {
✋ 注意:Sentinel 仅 接受 $permission 参数,因此您无法传递第二个参数。
✋ 注意:Entrust 仅接受布尔值(true/false)作为其第二个参数。
参数(可选)
默认情况下,OMAC 设置为 启用 并使用 Laravel 的内置授权方法。 (门) 如果您想使用不同的授权方法或禁用 OMAC,您可以更改参数。您可以在类或方法中执行一次性的使用,或者您可以在类的构造函数中设置它,以便为所有方法进行更改。
/**
* constructor
*
* @param boolean acl Whether or not ACL is enabled
* @param string $driver Which ACL package to use
*/
public function __construct() {
$this->acl = false;
$this->driver = "sentinel";
}
🔱 为什么叫“OMAC”?
我已经是一名 DC 极客超过 30 年了。虽然 DC 中的 OMAC 更多的是“大哥在看着”的类型,但它仍然很好地与 Object Managed Access Control(对象管理访问控制)相符。😄