laravel - Laravel ORM 关系,授权用户
问题描述
我想授权具有“卖家”角色的用户。如何向“卖家”提供政策,使卖家无法读取其他卖家的订单数据。
我的订单表与 4 个表有关系。这是我的订单图
订单模型 [Order.php]
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
public function items()
{
return $this->belongsToMany(Product::class, 'order_items','order_id','product_id')->withPivot('quantity','price');
}
public function user()
{
return $this->belongsTo(User::class);
}
}
订单政策 [OrderPolicy.php]
<?php
namespace App\Policies;
use App\User;
use App\Order;
use Illuminate\Auth\Access\HandlesAuthorization;
class OrderPolicy
{
use HandlesAuthorization;
public function before($user, $ability)
{
if ($user->hasRole('admin')) {
return true;
}
}
public function browse(User $user)
{
return $user->hasRole('seller');
}
public function read(User $user, Order $order)
{
if(empty($order-> )) {
return false;
}
return $user->id == $order-> ;
}
}
解决方案
推荐阅读
- c# - MVC 在两个日期之间从数据库下载数据
- scala - Scala Future 完成后进行清理的最佳实践
- java - 如何在 sparkjava 中以声明方式管理事务?
- java - 无法通过 spring-boot-starter-test 测试 Spring Boot REST API,而相同的“api”正在为 Postman 工作
- angular - 如何在 Angular 应用程序中使用 ngrx 存储
- qt - 尝试编译基于 QT 的跨平台应用程序,但总是出现此错误:usr/bin/ld: cannot find -lGL
- flutter - Flutter Navigation:导航到新屏幕时使用的最佳技术是什么?
- r - 如何在 R 中的 For 循环中跳过错误。并提取导致错误的 i 列表单独处理它们
- python - Django 根据迁移修复现有数据库
- amazon-web-services - AWS Lambda 和版本上传?