我一直在努力为我们公司开发内部员工门户。有部门,工作等级,工作区域,角色(用户,编辑者,管理员,超级管理员等)和特殊组(高级管理人员等)进行用户分组。像Facebook Sharings(灵活ACL)的高级定位数据库设计
用户必须有一个(只有一个)部门。 用户必须有一个(只有一个)工作成绩。 用户必须在至少一个区域工作。 用户必须有一个(只有一个)角色。 用户可能有一个或多个特殊组。
工作成绩和角色是分层的(一个等级或角色可能是另一个的继承),但其他的不是。
用户将只看到允许的菜单并访问允许的路线。
用户还将选择在发布新内容时哪些用户可以查看它。 例如: 组合1 :(IT或财务部门)和(工作级别是9,10,11之一)和(面积是1,5,8之一)和(独家特别小组是1.5, 8)除了用户ID = 1 组合2 :(人力资源部门)和(工作级别为11)和user_id = 3,4,5
组合可以像组合1和组合2那样相关为AND/OR
所以,会有很多内容,每个内容都会有不同的组权限。我尝试创建数据库模式,但很难获取用户登录时看到的所有内容。序列化的数据对于在db中保存组合集是很好的,但对于序列化的数据来说看起来是不可能的。在这个问题上使用MongoDB有没有好处?我怎样才能在表中保存组/用户权限的组合?
我研究了大量的ACL和RBAC示例,但找不到最佳解决方案。请帮忙。
顺便说一句,我使用Laravel框架。
谢谢。
的可能的复制[复合右倾系统:ACL,RBAC多什么(http://stackoverflow.com/questions/13580702/complex-righty-system-acl-rbac-还有更多) –