alchemy/acl-bundle

Symfony ACL 扩展包

安装数量: 3,014

依赖项: 0

建议者: 0

安全性: 0

星标: 2

关注者: 5

分支: 0

开放问题: 0

类型:symfony-bundle

0.2.0 2023-06-14 08:44 UTC

This package is auto-updated.

Last update: 2024-09-10 14:41:19 UTC


README

安装

项目配置

添加您想要扩展ACL的实体

# config/packages/alchemy_acl.yaml
alchemy_acl:
  objects:
    publication: App\Entity\Publication
    asset: App\Entity\Asset

然后您必须别名您的UserRepository服务

# config/services.yaml
services:
    Alchemy\AclBundle\Repository\UserRepositoryInterface: '@App\Repository\UserRepository'

为访问令牌添加redis缓存

# config/packages/cache.yaml
framework:
    cache:
        default_redis_provider: redis://redis
        pools:
            accessToken.cache: # You must use this name for auto wiring
                adapter: cache.adapter.redis

API

定义

  • userType可以是usergroup

  • userId用户ID或组ID(取决于userType)。如果值为NULL,则ACE允许所有人。

  • objectType取决于应用程序。依赖您定义的对象

alchemy_acl:
  objects:
    publication: App\Entity\Publication
    asset: App\Entity\Asset

在此应用程序中,objectType可以是publicationasset

  • objectId如果值为NULL,则ACE应用于此objectType的所有对象。

端点

此扩展包向应用程序公开以下路由

  • GET /permissions/aces 获取访问控制条目(ACE) 可用的查询过滤器
  • userTypeusergroup
  • userId
  • objectType
  • objectId

示例

# List all ACEs of an object
curl {HOST}/permissions/aces?objectType=publication&objectId=pub-42

# List all ACEs of a group
curl {HOST}/permissions/aces?userType=group&userId=g-42

# List all ACEs of a user
curl {HOST}/permissions/aces?userType=user&userId=u-42

# List all ACEs of a user on an object
curl {HOST}/permissions/aces?userType=user&userId=u-42&objectType=publication&objectId=pub-42
  • PUT /permissions/ace 添加或更新访问控制条目(ACE)

您必须提供以下正文

{
    "userType": "user",
    "userId": "the-user-id",
    "objectType": "publication",
    "objectId": "the-publication-id",
    "mask": 7
}
  • DELETE /permissions/ace 删除访问控制条目(ACE)
{
    "userType": "user",
    "userId": "the-user-id",
    "objectType": "publication",
    "objectId": "the-publication-id"
}