Laravel 4 — улучшите код для проверки подлинности

У меня есть приложение Laravel 4 с опросом ресурса

// routes.php
Route::resource('polls', 'PollController');

Я не хочу, чтобы кто-либо мог перечислять все опросы, кроме случаев, когда пользователь прошел проверку подлинности и если он (а) является администратором. Это было мое решение:

// PollController.php
public function index() {

if (Auth::check() && Auth::user()->admin) {
return View::make('polls.index', Poll::all());
}

return View::make('polls.create', []);
}

Этот код работает просто отлично, но он не очень чистый код. На этот раз я делаю это «проверка администратора» в нескольких местах. Также не похоже, что это следует из практики «Функция должна делать только одну вещь».

Мне было интересно, есть ли более чистый способ обработки случаев, когда ответ меняется в зависимости от того, вошел ли пользователь в систему и является ли он администратором?

0

Решение

Используйте группы маршрутов и фильтры авторизации.

http://laravel.com/docs/4.2/routing#route-groups

http://laravel.com/docs/4.2/security#protecting-routes

пример

Route::group(array('before' => 'auth'), function()
{
// Route::resource('poll', 'PollController');
// Additional routes
}

Вот большой учебник по Laravel в целом (и вашей теме);
http://culttt.com/2013/09/16/use-laravel-4-filters/

2

Другие решения

Других решений пока нет …