#7 Фильтры для маршрутов

Видеокурс Laravel: создание ToDo List

Создание фильтров для маршрутов


Создаем фильтр-проверку для адреса /todo - на данный URL требуется запретить вход для незалогиненного пользователя.
И при подобной попытке надо перебрасывать на страницу авторизации.
Для этого для маршрута todo добавляем фильтр:

Route::get('/todo', [
		'as'    => 'todo',
		'uses'  => 'TodoController@index'
])->before('auth');
Так же в файле filter.php меняем путь для редиректа на нужный нам
Route::filter('auth', function()
{
	if (Auth::guest())
	{
		if (Request::ajax())
		{
			return Response::make('Unauthorized', 401);
		}
		else
		{
			return Redirect::guest('/todo/login');
		}
	}
});

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

Route::get('/todo/login', [
		'as' => 'user-login', 
		'uses' => 'AuthController@getLogin'
])->before('guest');
И для фильтра guest меняем редирект на нужный нам
Route::filter('guest', function()
{
	if (Auth::check()) return Redirect::to('todo');
});

Для защиты от cross-site атак добавим фильтры для всех роутов обслуживающих формы (POST и GET запросы).

Route::post('/todo/login', [
	'uses' => 'AuthController@postLogin'
])->before('csrf');

Добавить отзыв (пожелание, комментарий)