关于我的(Laravel 7)项目的一些背景信息/要求,需要了解/回答我的问题。
我搜索了一个好的解决方案来满足上述要求,并找到了Laravel Spatie Permissions
。我认为该库适合解决我的“问题”,但缺少某些功能。据我所知,它不可能:
示例
admin_default
create_system_users
和see_organizations
system
的帐户的用户customer_default
see_organizations
customer
的帐户的用户create_system_users
权限只能分配给类型为system
的帐户的角色see_organizations
分配给类型为system
organization
customer
的帐户的角色可能的解决方案1。
我可以在角色表中添加一个额外的列(例如account_type,类型:整数),以定义该角色可以分配给哪个帐户类型。我需要在一些权限库功能中添加额外的检查,例如asignRole()
和syncRoles()
。
可能的解决方案2。
我可以在权限表中增加一列(例如account_type,类型:bitflag),该列定义了可以将权限分配给哪些角色(与帐户类型相关)。
由于Spatie权限默认情况下不支持此功能,因此我需要添加功能,主要是对现有功能的逻辑进行if检查。因为我不想在lib本身中进行更改,所以我想做一些继承Role
和Permission
类并“继承” HasRoles
和{{1}类的类}。我会将HasPermissions
配置文件中的roles
和permissions
条目指向我自己的类,并用自己的特征(而不是我的特征)覆盖我自己的类中的Permission.php
确定这是否可行/应该在PHP中有效,但我的逻辑说应该有效,缺乏PHP知识)
我的问题
use
是正确的库,还是有更好的“搁置”解决方案来解决我的问题? (或者Mayble Spatie Permissions
默认情况下支持此功能,但我不知道吗?)
当Spatie Permissions
是“最好的出行方式”时,我的Spatie Permissions
是好的方法吗?这应该工作吗? (现在也是在更新权限库时,是否还有将来的证明?)
我也可以自己写点东西,但是我认为这是在重新发明轮子或?
注意:我还考虑了未来的证明和可伸缩性