Маршрутизатор проверит, соответствует ли ваш запрос какому-либо объявленному маршруту. Промежуточное программное обеспечение будет работать ПОСЛЕ того совпадения, поэтому вы не можете просто вернуться к маршрутизатору и попытаться найти другое совпадение.
Следовать Laravel и шаблону маршрутов - у вас должен быть один маршрут, который будет указывать на метод внутри контроллера. Затем внутри этого Вы можете проверить, вошел ли пользователь в систему или нет, и выполнить getAllFields () с этого контроллера. Переписывать его будет не так уж и много, поскольку вы все равно используете UserController на обоих маршрутах.
web. php
$router->get('/user/{id}', 'UserController@get');
UserController. php
public function get()
{
return auth()->check() ? YourMethodForLogged() : YourMethodForNotLogged();
}
Или, если логи не так много c Вы можете сохранить это одним способом.
Также будет хорошей идеей следовать стандартам REST Laravels (так используйте show вместо get, «users» вместо «user» et c - подробнее https://laravel.com/docs/7.x/controllers)
web. php
$router->get('/users/{user}', 'UserController@show');
UserController. php
public function show(User $user)
{
if (auth()->check()) {
//
} else {
//
}
}
Подводя итог - для ваших нужд используйте аутентификацию внутри контроллера вместо промежуточного программного обеспечения. Чтобы проверить, вошел ли пользователь в систему, вы можете использовать Facade Auth :: check () или вспомогательный auth () -> check (), или напротив Auth :: guest () или auth () -> guest ().
Если вы на самом деле используете Lumen вместо полного Laravel, то по умолчанию нет вспомогательного помощника (вы можете создать собственный пакет или использовать его как lumen-helpers) или просто оставить его простым и использовать вместо него только фасады ( если вы затем включили в люмен).
Подробнее https://laravel.com/docs/7.x/authentication и https://lumen.laravel.com/docs/7.x/authentication