cawaphp/acl

此包已被放弃,不再维护。未建议替代包。

Сáша Acl

dev-master 2018-02-19 12:18 UTC

This package is not auto-updated.

Last update: 2023-12-23 15:25:08 UTC


README

简单的ACL,具有权限和过滤器

警告

请注意,此包仍在积极开发中。可能会发生一些破坏性更改。感谢您的理解。

特性

  • 递归权限,格式简单:key1/key2/key3
  • 可以在权限上应用过滤器,以便根据上下文限制某些权限
  • 使用addPermissions合并多个角色的权限
  • 简单的PHP数组,可以序列化到数据库中进行持久化存储

基本用法

class Role 
{
    use PermissionTrait;
    
    public function __construct()
    {
        $this->addPermissions([
            new Permission('app', [
                new Filter('app', [1]),
                new Permission('user', [
                    new Permission('group', [
                        new Permission('read'),
                        new Permission('create'),
                        new Permission('update'),
                        new Permission('delete'),
                    ]),
                ])
            ])
        ]);
        
        $this->addPermissions([
            new Permission('app', [
                new Filter('app', [2]),
                new Permission('user', [
                    new Permission('role', [
                        new Permission('read'),
                    ])
                ])
            ])
        ]);
    }
}

$role = new Role();

// Permissions
var_dump($role->isAllowed('app/user/group/read'); // true
var_dump($role->isAllowed('app/user/role/read'); // true
var_dump($role->isAllowed('app/user/role/create'); // false
var_dump($role->isAllowed('app/user/*'); // true
var_dump($role->isAllowed('app/user/permision/*'); // false

// Filters
var_dump($role->isAllowed('app', ['app' => 1])); // true
var_dump($role->isAllowed('app/user/role/read', ['app' => 1])); // true (filter are inherited)
var_dump($role->isAllowed('app/user/role/read', ['app' => 2])); // false
var_dump($role->isAllowed('app/user/role/read', ['unknown' => 1])); // true (no filter found mean all available)

关于

许可证

Cawa遵循GPL v3许可证 - 有关详细信息,请参阅LICENSE文件。