Отображение только текущих аутентифицированных пользовательских заказов в laravel 5.8 - PullRequest
0 голосов
/ 08 апреля 2019

Я создаю API для разработчика Android, чтобы он мог показывать заказы, сделанные пользователем. Мой код заставляет любого пользователя показывать любой продукт, а я хочу только показывать заказы, сделанные аутентифицированным пользователем

Я защитил маршрут так:


Route::middleware('auth:api')->group( function () {
    Route::resource('orders', 'API\OrdersController');
});

и я использую следующие заголовки по запросу:

'headers' => [    'Accept' => 'application/json',    'Authorization' => 'Bearer '.$accessToken,]

вот код контроллера метода show ($ id)

public function show($id)
{
    $user = Auth::id();
    $Orders = Orders::where('id',$id)->where('order_shopper_id', $user)->get();
    if (is_null($Orders) || empty($Orders)) {
        return $this->sendError('Orders not found.');
    }
    return $this->sendResponse($Orders->toArray(), 'Orders retrieved successfully.');
 }

это работает, но когда, например, я пытаюсь получить доступ к номеру заказа "2", и аутентифицированный пользователь не создал этот заказ, он все равно возвращает успех с пустыми данными.

Все, что я хочу, это "Выберите номер заказа (#), но убедитесь, что вошедший в систему пользователь создал этот заказ, а не кто-то другой, если не возвращает unAuthenticated"

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 08 апреля 2019

Метод QueryBuilder::get() возвращает коллекцию, пустая коллекция по-прежнему является объектом коллекции, поэтому $Orders никогда не будет нулевым или пустым.

Попытка:

if (!$Orders->count()) {
    return $this->sendError('Orders not found.');
}
1 голос
/ 08 апреля 2019

Если вы аутентифицируете пользователя на основе токена, вы должны получить аутентифицированный идентификатор пользователя следующим образом:

$user = Auth::guard('api')->id();

И измените выражение if, как сказал @kiske.

0 голосов
/ 08 апреля 2019

1001 * попробовать *

if($Orders->isEmpty()){
 return $this->sendError('Orders not found.');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...