Переход по ссылке только для авторизованных пользователей Laravel?

В Laravel существует несколько способов ограничить доступ к определенным маршрутам только для авторизованных пользователей. Один из самых простых способов - использование middleware.

Middleware в Laravel - это слой обработки запроса между входящим запросом и маршрутом. Мы можем определить свой middleware, который будет проверять, что пользователь авторизован перед тем, как позволить ему перейти по ссылке.

Вначале мы создаем middleware с помощью команды Artisan:

php artisan make:middleware CheckAuth

После выполнения команды будет создан файл CheckAuth.php в директории app/Http/Middleware. В файле CheckAuth.php вам нужно реализовать метод handle:

public function handle($request, Closure $next)
{
    if (Auth::check()) {
        return $next($request);
    }

    abort(403, 'Access denied');
}

В этом методе мы проверяем, авторизован ли пользователь (Auth::check()) и, если да, пропускаем его дальше (return $next($request)). В противном случае вызываем ошибку 403 (Доступ запрещен) (abort(403, 'Access denied')).

Затем, чтобы применить middleware к определенному маршруту, вы можете использовать метод middleware в вашем файле маршрутов (routes/web.php):

Route::get('/my-protected-page', function() {
    // Код обработки страницы
})->middleware('check.auth');

В приведенном выше примере мы использовали middleware с именем check.auth. Вы можете заменить его на любое другое имя, если предпочитаете.

Теперь, когда пользователь пытается получить доступ к маршруту /my-protected-page, Laravel автоматически вызывает middleware check.auth перед тем, как позволить пользователю перейти по ссылке. Если пользователь не авторизован, он будет перенаправлен на страницу авторизации.

Кроме того, если вам нужно ограничить доступ к нескольким маршрутам в вашем приложении только для авторизованных пользователей, вам не придется повторять один и тот же middleware для каждого маршрута. Вместо этого вы можете добавить middleware ко всей группе маршрутов:

Route::middleware(['check.auth'])->group(function () {
    Route::get('/my-protected-page', function() {
        // Код обработки страницы
    });
});

Таким образом, все маршруты, определенные внутри group, будут автоматически защищены с помощью middleware check.auth.