ccvf2s/access-manager

用户权限角色的管理助手

1.0.2 2019-02-11 11:00 UTC

This package is auto-updated.

Last update: 2024-09-12 04:19:49 UTC


README

要求

主要目标

该库的目标是能够简单管理用户的访问级别,基于她/他拥有的权限列表。

如何设置

composer require "ccvf2s/access-manager:^1.0"

如何使用

最好使用依赖注入库,但如果不行,可以自由创建一个新的DefaultDecisionManager实例。

但在做之前,你需要实现Ccvf2s\AccessManager\Domain\User\UserProvider接口。这将使库能够根据传递给findUser的id检索你的用户。

示例

<?php

use Ccvf2s\AccessManager\Application\DefaultDecisionManager;

$filePath = 'security.yml';
$decisionManager = new DefaultDecisionManager(
                    new YamlPermissionProvider(new YamlParser(), $filePath),
                    new EmployeeProvider(),// EmployeeProvider implements UserProvider
                    new DefaultUserAccess()
                );

$access = $decisionManager->isGranted('ROLE_USER', 1);

$access将为允许访问时返回true,否则返回false

yaml文件内容的示例(文件必须遵守这种结构,否则将抛出异常)

ACCESS:
  ROLES:
    ROLE_USER: ALLOWED_1
    ROLE_MODERATOR: [ROLE_USER, ALLOWED_2]
    ROLE_ADMIN: [ROLE_MODERATOR, ALLOWED_3]
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ALLOWED_4]

覆盖逻辑

如果需要提供自己的逻辑,库提供了一些接口

  • UserProvider用于提供用户提供者。
  • PermissionProvider用于提供你的权限列表。
  • UserAccess用于提供一些复杂的逻辑来授予用户访问权限。
  • DecisionManager如果您想覆盖并使用自己的。

异常

您将在Application目录中找到一些异常。

如何运行测试

composer test

如何贡献