charcoal/user

用户定义、认证和授权。


README

User包提供了定义用户模型、认证和授权用户的抽象工具,这些功能通过集成Laminas Permissions ACL实现。

安装

composer require charcoal/user

概述

用户对象

本模块的核心是定义一个"用户"对象。该接口可以在\Charcoal\User\UserInterface中找到。此接口扩展了来自charcoal/object\Charcoal\Object\ContentInterface,而\Charcoal\Object\ContentInterface扩展了来自charcoal/core\Charcoal\Model\ModelInterface

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

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

用户属性

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

Content-Interface继承的属性

认证

待办事项

授权

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

有两个主要概念需要管理,要么从JSON配置文件中,要么在数据库中(与charcoal/admin配合良好),即角色权限

ACL配置

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

ACL示例

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

$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' ]);

资源