我对Laravel很新,但现在已经掌握了大部分基础知识。
目前,我构建了一个应用程序,其中多个公司都获得了代表其主要用户的帐户,让我们称他为CompanyAdmin。 该用户可以为该公司创建新用户 ,并且可以查看该公司的所有报价。
新创建的用户称其为CompanyEmployee,无法创建新用户,只能查看他们自己创建的报价,以及创建新报价。
现在当然有一个SuperAdmin,它位于桌子的另一边。他查看了所有公司的所有报价,能够随心所欲地创建用户,并且可以接受/编辑报价。
我目前的做法是将user_id附加到所有引号,并将用户附加到公司,并为他们提供角色。 所有逻辑都将在控制器中进行,我将检查用户的角色,因此只读取/保存引号,用户可以编辑。
然而,这样做感觉非常脏,听起来需要付出很多努力。如果你愿意,为SuperAdmin的员工创建另一个角色,您需要更改每个控制器。
我找不到一种方法来定义每个模型的每个角色的访问权限,所以当我调用Quotes :: all()时,它只检索合法的(当然也可以保存)。
请指导我使用Laravel功能(甚至包装,但我之前没有使用过),这可以帮助我完成任务。
期待可能导致维护率低的解决方案。 最好的问候!
答案 0 :(得分:2)
要对不同类型的用户进行身份验证并保护特定类型可以访问的路由组,您可以使用guards
,以便授权CRUD
您可以使用FormRequest
的操作,我认为您拥有所有内容你需要在这两个链接下,当然你需要阅读这些,这是一个很好的起点。对于表格,你可以有:
用户,角色,公司,user_role,user_company
模特:
用户,角色,公司
答案 1 :(得分:2)
来自doc
除了提供开箱即用的身份验证服务外, Laravel还提供了一种简单的方法来授权用户操作 给定资源。像身份验证一样,Laravel的方法 授权很简单,授权有两种主要方式 行动:大门和政策。
Laravel有两个名为盖茨和政策的概念,我们可以将它注入模型,(特别是盖茨)。因此,当在模型上调用查询时,盖茨会确保用户具有适当的权限。
您可以阅读更多here