我正在开发一个 CRM,它将具有高级授权和管理在系统中具有特定角色的组中的用户。
基本上,我想做的是:
- 管理(域)模型/控制器/操作的动态授权
- 管理对象和字段的动态授权。
我知道 security.yml 文件中的 ROLE_xxxx ,但我不想对角色进行硬编码。
例如,我想要一种矩阵/网格,超级管理员可以在其中创建自定义授权角色。
其中一个角色可能是:“团队领导”可以查看和编辑员工的电子邮件地址,但不能查看或编辑 Employee_Wage 字段。
另一个用例是用户组“Accounting”中的用户可以调用操作 generateInvoiceAction(),但不能访问操作 createNewEmployeeAction()。
另一个用例是 PROJECT LEADER 可以使用 newProjectAction() 添加项目,但 PROJECT 对象的某些字段/属性对 PROJECT LEADER 组不可见/不可访问
我知道您可以在安全和路由中设置这些,但我不想对这些角色进行硬编码。例如,如果公司决定创建一个具有特定角色的新组,他们应该能够做到。
我的(伪)解决方案
查看每个域模型、操作/函数和对象/字段并为 CRUD 创建一个角色,例如创建 EMPLOYEE_FIRSTNAME_READ、EMPLOYEE_FIRSTNAME_UPDATE、EMPLOYEE_CREATE、EMPLOYEE_EDIT、EMPLOYEE_DELETE 等...
创建一个数据库对象“组”,其标题字段包含所有角色的组合数组。
将用户放入组
这是要走的路还是有更好的方法在 Symfony2 中实现这一目标?
基本上:创建一个基于域模型、对象、字段等具有特定角色的组......可以使用管理员后端进行配置。
我希望我能正确解释这一点,请随时回复并询问更多信息。
(我记得旧版本的 Invision Power Board 中的类似内容,您可以在其中配置权限掩码网格并将其附加到组)