locomotivemtl/charcoal-user

用户定义、认证和授权。


README

用户定义(作为Charcoal模型),认证和授权(使用Laminas ACL)。

目录

如何安装

安装 charcoal-user 的首选(也是唯一支持的方式)是使用 composer

★ composer require locomotivemtl/charcoal-user

依赖关系

  • PHP 7.1+
  • laminas/laminas-permissions-acl
  • locomotivemtl/charcoal-object

用户对象

该模块的核心是“用户”对象的定义。该接口可以在 \Charcoal\User\UserInterface 中找到。此接口扩展了 \Charcoal\Object\ContentInterface(来自 locomotivemtl/charcoal-object),它又扩展了 \Charcoal\Model\ModelInterface(来自 locomotivemtl/charcoal-core)。

使用此模块的首选方式是在项目中定义自己的用户类,并扩展提供的 \Charcoal\User\AbstractUser 类。

对于快速原型或小型项目,提供了一个完整的具体类 \Charcoal\User\GenericUser

用户属性

请注意,用户的 keyusername。因此,id() 返回用户名。它必须是唯一的。

Content-Interface 继承的属性

认证

...

认证示例

...

授权

用户授权是通过基于角色的 访问控制列表(ACL)管理的。内部,它使用 laminas/laminas-permissions-acl 进行 ACL 逻辑。建议阅读 Laminas ACL 文档 了解更多关于它的工作方式。

必须管理两个主要概念,无论是从 JSON 配置文件还是数据库中(与 locomotivemtl/charcoal-admin 一起工作得很好),即 角色权限

ACL 配置

设置 ACL 时,强烈建议使用 \Charcoal\User\Acl\Manager

ACL 示例

{
    "acl": {
        "permissions": {
            "superuser": {
                "superuser": true
            },
            "author": {
                "allowed": {},
                "denied": {}
            }
        }
    }
}
use Laminas\Permissions\Acl\Acl;
use Laminas\Permissions\Acl\Resource\GenericResource as AclResource;

// Dependencies from `charcoal-user`
use Charcoal\User\Acl\Manager as AclManager;

$acl = new Acl();

 // Add resource for ACL
$acl->addResource(new AclResource($resourceName));

$aclManager = new AclManager([
    'logger' => $logger,
]);
$aclManager->loadPermissions($acl, $config['acl.permissions'], $resourceName);

$authorizer = new Authorizer([
    'logger'   => $logger,
    'acl'      => $acl,
    'resource' => $resourceName,
]);

$isAllowed = $authorizer->userAllowed($user, [ 'permssion' ]);

开发

安装开发环境

★ composer install --prefer-source

运行脚本(phplint、phpcs 和 phpunit)

★ composer test

API 文档

开发依赖

  • phpunit/phpunit
  • squizlabs/php_codesniffer
  • satooshi/php-coveralls

持续集成

编码风格

charcoal-user 模块遵循 Charcoal 编码风格

可以使用 composer phpcs 执行代码风格验证/强制执行。还提供了一个自动修复程序,使用 composer phpcbf

在运行 phpstan analyse -l7 src/ 时,此模块不应抛出任何错误 👍。

作者

许可证

Charcoal遵循MIT许可证。详细信息请参阅LICENSE