kevinsentjens / role-right-bundle
角色权限系统的 Symfony 实现。
Requires
- php: ^7.2.5
- symfony/config: 5.*
- symfony/console: 5.*
- symfony/dependency-injection: 5.*
- symfony/http-kernel: 5.*
- symfony/orm-pack: *
- symfony/security-bundle: 5.*
- symfony/twig-pack: *
README
这是一个简单的 Symfony 角色/权限系统实现。该包提供了创建和管理角色和权限的结构。
该包包含以下内容
- 3 个实体
User, KSRole, KSRight
- 3 个存储库
UserRepository, KSRoleRepository, KSRightRepository
- 一个 bin/console 命令,用于将实体和存储库放置在 src 文件夹中
- 用于处理
KSRole
和KSRight
检查的 Twig 函数
该包不包含
此包**不**提供控制器或视图。它仅提供功能。我可能在将来包含它。
注意
我创建此包是为了自己使用。然而,我决定将其公开。如果您有任何建议,可以通过以下电子邮件联系我:kevinsentjens.dev@gmail.com
。
此包使用 Symfony 安全组件。没有它,此系统**无法**工作。
您仍然可以使用来自 Symfony 安全组件 的 access_control
。例如,假设您有一个后端系统,您只想让具有特定角色/权限的人访问。然而,普通用户没有登录。您可以这样做
access_control: - { path: ^/backend/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/backend/*, roles: ROLE_USER }
来自 Symfony 安全组件 的 User
实体给所有已登录用户赋予角色 ROLE_USER
。
您还可以使用自己的用户类。只需用您的类替换我提供的类,只要它仍然是名为 User
的类即可(不要忘记将 KSRight
与 User
重新链接)。
安装
在您安装包之前,创建一个配置文件 config/packages/ks_role_right.yaml
ks_role_right: app_directory: '%kernel.project_dir%'
使用以下命令安装包
composer require kevinsentjens/role-right-bundle
设置系统的必要文件
php bin/console ks:set-files
创建迁移
php bin/console make:migration
用法
控制器
在控制器中检查特定的 KSRight
public function __construct(KSRoleRight $ksRoleRight) { if (!$ksRoleRight->hasKSRight('manage-users')) { throw $this->createAccessDeniedException('You don\'t have the required permissions.'); } }
您可以在控制器的 __construct()
中这样做,使其适用于每个路由,或者您可以在单个函数中使用它。KSRole
的工作方式完全相同。只需将
if (!$ksRoleRight->hasKSRight('manage-users'))
替换为
if (!$ksRoleRight->hasKSRole('SUPER_ADMIN'))
Twig 视图
此包提供 2 个 Twig Functions
和 1 个 Twig filter
要检查 KSRight
,您可以使用函数 has_right('权限名称')
要检查 KSRole
,您可以使用函数 has_role('角色名称')
要检查 KSRole
是否具有 KSRight
,您可以使用过滤器 KSRole 对象|roleHasRight('权限名称')
许可证
此包是免费软件,根据 MIT 许可证 的条款分发。
未来想法
- 创建一个注解用于在控制器中使用,而不是使用
KSRoleRight->hasRight('权限名称')
- 申请为 Symfony 食谱
- 提供控制器和视图
更新
- 2021 年 3 月 22 日
- 修改了
composer.json
。现在,此包可用于任何 Symfony 5.* 包(以后可能会更改)。 - 包现在是公开的。
- 修改了
- 2021 年 2 月 6 日
- 添加了方法
getCurrentUser()
,因此您不再需要使用security->getUser()
。
- 添加了方法
- 2021 年 2 月 5 日
- 对
hasKSRole()
和hasKSRight()
进行了内部更改。 - 已移除私有函数
getUserByEmail()
。此函数不再使用。
- 对
- 2021年2月4日
- 在
KSRoleRight
类中添加了按名称获取KSRole
和KSRight
的方法。 - 在
KSRoleRight
类中添加了按 ID 获取KSRole
和KSRight
的方法。 - 更新了 ReadMe 文件。
- 在