【发布时间】:2019-08-10 00:11:24
【问题描述】:
我有一个具有管理员、经理和员工角色的应用。 经理可以编辑所有员工的字段 A、B、C。 管理员可以编辑所有用户的字段 A、B、D、E。
问题:我应该如何根据用户角色过滤参数?
注意事项:
- 我不想用
if/else子句过滤控制器内部的参数,因为感觉太脏了。 - 有一个扩展
FormRequest类的选项,但这是一种很老套的方法。代码最终变得不太可读,因为FormRequest永远不会用于操作请求。 - 我可以将此逻辑分离到控制器内部的私有方法中。它可以工作,但仍然有一个胖控制器。
- 我可以为管理员、经理和用户分离路由和控制器。代码看起来更简单,但结构更复杂。
你们对此有何看法?还有其他建议吗?
非常感谢!
编辑:-------------
只是澄清一下,因为许多人对我的要求感到困惑:
我已经在使用Policy 和Gate 进行授权。当您想更新用户时,我要问的是关于这种特定情况的问题。经理可以更新某些特定字段(A、B、C),而管理员可以更新其他字段(A、B、D、E)。
现在我们需要根据用户角色接受不同的请求参数,但是我们应该在哪里做呢?在这个控制器中,在扩展的 FormRequest 类中还是在单独的控制器中?
谢谢!!!
【问题讨论】:
-
您可以使用门和策略
https://laravel.com/docs/5.8/authorization您可以根据管理员角色管理route, controller, blade -
你考虑过custom validation rules吗?
标签: laravel parameters request authorization roles