alchemy / acl-bundle
Symfony ACL 扩展包
    0.2.0
    2023-06-14 08:44 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- doctrine/orm: ^2.6
- ramsey/uuid-doctrine: ^1.5
- symfony/event-dispatcher: ^4.0|^5.4|^6.1
- symfony/framework-bundle: ^4.0|^5.4|^6.1
- symfony/security-bundle: ^4.0|^5.4|^6.1
- symfony/yaml: ^4.4|^5.4|^6.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- phpunit/phpunit: ^10.2.2
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可以是user或group
- 
userId用户ID或组ID(取决于userType)。如果值为NULL,则ACE允许所有人。
- 
objectType取决于应用程序。依赖您定义的对象
alchemy_acl: objects: publication: App\Entity\Publication asset: App\Entity\Asset
在此应用程序中,objectType可以是publication或asset。
- objectId如果值为NULL,则ACE应用于此- objectType的所有对象。
端点
此扩展包向应用程序公开以下路由
- GET /permissions/aces获取访问控制条目(ACE) 可用的查询过滤器
- userType(- user或- group)
- 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"
}