我正计划扩展一个系统,该系统可以帮助我标记学生参加所注册的各种课程的实验室课程。我拥有该系统的基本版本,但需要一个更好的权限系统。
我有用户和课程。我想要的是具有基于课程的“协调员”和“毕业”等角色的能力。
因此,特定的用户可能是“课程1的成绩”和“课程2的协调员”
“在课程X上评分”的角色具有“可以查看课程X”,“可以在课程X上评分”等基本权限。“课程X的协调员”可能具有其他权限,例如“可以在课程上注册学生” X”。
因此,我的角色和权限由课程来确定。
有了spatie / laravel-permission软件包,我了解到我可以担任Grader和Coordinator之类的角色(以及基本权限)。但这并不允许我将特定用户设置为一门课程的评分员,而并非所有其他用户。
将此软件包(spatie / laravel-permission)与Laravels政策结合起来,我想我走得更近了。这些政策是通过模型(即本例中的“课程”模型)参数化的。但是,除非参数设置得过高,否则我不理解这些策略将如何与角色和权限结合在一起。
是否有解决最佳方法的想法?
我想到的一种方法是拥有“ coordinator_course1”,“ coordinator_course2”,“ coordinator_course3”等角色,以及诸如“ can_view_course1”,“ can_view_course2”,“ can_view_course3”之类的权限,……就像一个糟糕的选择。
任何建议都将受到欢迎。