Вот как я решил это.
Я создал контроллер главной страницы:
class HomeController extends Controller
{
public function index()
{
if(!Auth::check()){
return view('layouts/login');
}
return view('index');
}
public function main()
{
if(!Auth::check()){
return view('layouts/login');
}
return view('layouts/main');
}
}
Затем в роутах прописал вот так:
Route::get('/', 'HomeController@index')->name('index');
Route::get('/', 'HomeController@main')->name('main');
UPD исправление плохого кода.
Как я сделал выше - неправильно.
Переделал вот так, ибо я не взял во внимание то, что шаблон выводится независимо от роутера, и я выводил его зачем-то по роуту '/' :
HomeController.php
class HomeController extends Controller
{
public function main()
{
if(!Auth::check()){
return view('layouts/login');
}
return view('layouts/main');
}
}
web.php
Route::get('/', 'HomeController@main')->name('main');
Дальше я столкнулся с проблемой, что если гость переходит по пути который существует на сайте, то вылетает ошибка которая в вопросе вместо редиректа, независимо от того, что маршруты которые нужно запретить находятся в группе роутов auth.
Исправил вот так (не знаю насколько правильно, знатоки мб подскажут):
В Handler.php в конце метода rednder()
if(!Auth::guest()){
return parent::render($request, $exception);
} else {
return redirect()->guest('/LOGIN.PAGE.HERE');
}
После этого если гость переходит по существующему маршруту, его перекидывает на страницу логина, в моем случае '/'.
Так же я убрал ВСЕ
return view
для маршрутов в роутере и прописал все это в контроллере HomeController, а web.php привел к такому виду:
Route::get('/path', ['as' => 'name', 'uses' => 'MainController@method']);