Отображение только текущих аутентифицированных пользовательских заказов в laravel 5.8

Я создаю 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», а аутентифицированный пользователь не создал этот заказ, он все равно возвращает успех с пустыми данными.

Все, что я хочу, это: «Выберите номер заказа (#), но убедитесь, что вошедший в систему пользователь создал этот заказ, а не кто-то другой, если он не вернется без аутентификации».

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

Что в $user? Вы можете проверить это? верните его и посмотрите, пустой он или нет.

Rouhollah Mazarei 08.04.2019 14:13

Он возвращает текущий идентификатор пользователя, прошедшего проверку подлинности.

Ahmed Saleh 08.04.2019 14:16

Просто используйте это if ($Orders), это сработает.

narayansharma91 08.04.2019 14:17

Он ВОЗВРАЩАЕТСЯ или вы ожидаете, что он вернет идентификатор пользователя? Потому что я думаю, что вы должны использовать защиту API.

Rouhollah Mazarei 08.04.2019 14:18

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

Ahmed Saleh 08.04.2019 14:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
527
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

Пытаться:

if (!$Orders->count()) {
    return $this->sendError('Orders not found.');
}

Это было не совсем то, что я ищу, но это сработало

Ahmed Saleh 08.04.2019 18:20

пытаться

if ($Orders->isEmpty()){
 return $this->sendError('Orders not found.');
}

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

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

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

Я аутентифицирую пользователей на основе токенов, и я не использую этот способ, и он все еще работает, но в любом случае я посмотрю.

Ahmed Saleh 08.04.2019 18:23

Другие вопросы по теме