Я использую Laravel 5.4 и имею модель под названием Order
. Для проверки я создал двух пользователей и два Ордена, каждый из которых имеет один Орден.
Я только что увидел, что могу получить заказ того, кто не является моим текущим пользователем. Я получаю список собственных заказов пользователя, используя Auth::user()->orders
. Но для того, чтобы показать детали конкретного заказа, я делаю это:
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$order = CustomerOrder::findOrFail($id)->with('products')->get();
return view('order.show')
->with('order', $order);
}
Что мне здесь не хватает? Есть ли промежуточное программное обеспечение или что-то, чтобы сообщить приложению, чтобы разрешить доступ только к заказам, связанным с аутентифицированным пользователем?
Изменить: я попытался сделать это с помощью политики OrderPolicy
(CRUD).
view()
Функция Политики:
/**
* Determine whether the user can view the customerOrder.
*
* @param \App\User $user
* @param \App\CustomerOrder $customerOrder
* @return mixed
*/
public function view(User $user, CustomerOrder $customerOrder)
{
return $user->id === $customerOrder->user_id;
}
И я зарегистрировал его в AuthServiceProvider.php
:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Adress::class => AdressPolicy::class, //Doesn't work either
Order::class => OrderPolicy::class
];
Я все еще могу проверить Заказ для другого пользователя.