@Artem0071
Безработный mr. Junior

Можно ли использовать middleware в контроллере?

Есть контроллер ShopController, в нем есть стандартный метод 'show'

Так вот, когда передатеся /api/shops/some_id, то для этого ->middleware(['auth:api']) не нужно использовать
Но когда есть параметр, наприме ?fields=balance, то нужно проверить тип пользователя

То есть получается что мне для всего метода данная заглушка не нужна, а только при некоторых параметрах

Но у меня не получается задействовать middleware в самом методе

Вот делаю так:
if (in_array('balance', $params)){
            $this->middleware(['auth:api']);
            return $this->setData(['test' => 1])->renderOutput();
        }


Но он просто не видит этот middleware
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
middleware так не работают. Они либо сначала выполняют свою логику и потом говорят следующему в цепочке "запускайся", либо сначала говорят следующему "запускаться" и потом отдают ответ. Собственно, эта цепочка - набор мидлвейров в порядке, в котором они указаны, и где-то там, если это дело запустить, будет вызов метода контроллера.

В целом это больше похоже на авторизацию, ежели аутентификацию, так что можете использовать $this->authorize('shops.filter') или что то подобное. Ну или проверять аутентификацию, как вы хотели: Auth::authenticate()

Лучше без фасадов, конечно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы