smarch/omac

一个简单的 ACL 特性,允许使用所需的任何授权包进行授权检查。目前支持 Laravel 默认、Shinobi、Sentinel 和 Entrust。

v1.0.2 2016-01-29 18:15 UTC

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(对象管理访问控制)相符。😄