legalthings/permission-matcher

0.1 2017-01-13 14:18 UTC

This package is auto-updated.

Last update: 2024-09-11 19:56:27 UTC


README

使用权限匹配器库,您可以检查用户是否有权访问特定资源。指定资源和访问控制级别由库的客户端负责。

要求

所需的PHP扩展由composer标记

安装

可以使用composer安装此库。

composer require legalthings/permission-matcher

如何工作

该库公开了一个函数,您可以获取匹配认证组的权限列表。认证组可以是任何您想要的东西,在下面的示例中使用了资源URI,但您也可以使用任何格式的字符串。在这个示例中,有一个具有某些权限的用户。然后我们可以请求PermissionMatcher类提取给定认证组的用户权限。请注意,您可以使用通配符*。您还可以通过在认证组前放置一个!来反转权限。

$matcher = new PermissionMatcher();

$permissionsThatSomeUserHas = [
    '/organizations/0001' => ['full-access'],
    '/organizations/0002?list=all' => 'list',
    '/organizations/0003/*/foo' => ['read', 'write']
];

echo $matcher->match($permissionsThatSomeUserHas, ['/organizations/0001']);
// outputs ['full-access']

echo $matcher->match($permissionsThatSomeUserHas, ['/organizations/0001', '/organizations/0003/random/foo']);
// outputs ['full-access', 'read', 'write']

echo $matcher->match($permissionsThatSomeUserHas, ['/organizations/0002']);
// outputs []

echo $matcher->match($permissionsThatSomeUserHas, ['/organizations/0002?list=all']);
// outputs ['list']

echo $matcher->match($permissionsThatSomeUserHas, ['/organizations/*']);
// outputs ['full-access', 'read', 'write']