我使用 Laravel 作为我的 PHP 框架。这是一个约定index show store ...
控制器中的功能。
我有两种类型的用户(管理员和普通用户)。让我们假设有一个Order
(在餐厅)模型,我想实施index
其控制器的功能。
一位用户可以有多个订单。
我需要的是这个功能:
- 如果管理员调用此 API:返回所有订单
- 如果普通用户调用此API:仅返回该用户拥有的订单
我搜索了,但找不到任何东西(老实说,我不知道要搜索什么)。
一旦我按照下面的方式做了我不喜欢的事情,因为它看起来两个不同的功能聚集在一个中:
if ($user->role == admin) {
// fetch all orders
} else if ($user->role == normal_user) {
// just find user orders
}
所以我的问题是实现我想要的最好方法是什么?
这样的 REST API 端点通常是允许多个过滤器、排序和分页的搜索。如果是这样,那么为过滤器应用不同的默认值并将过滤器限制为角色是完全可以的。
我会自动应用过滤器 user=currentUser 来缺少管理员角色,并在没有管理员角色的用户尝试为其他用户应用用户过滤器时返回禁止。
通过这种方法,您还可以为管理员提供搜索特定用户的报价的功能,并且您只需要控制器使用一个搜索 api。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)