Недавно я начал развиваться с Laravel 4, и у меня возник вопрос о маршрутах.
Для '/' я хотел бы иметь две разные страницы просмотра, основанные на статусе авторизации пользователя.
Если пользователь вошел в систему и просматривает «/», я хотел бы показать им представление с элементами управления администратора, и когда пользователь просматривает «/» как обычный пользователь без входа в систему, я хотел бы предложить общий информационный вид ,
Чтобы добиться этого, я играл с фильтром «auth» и «guest», но мне не повезло. // app / routes.php
// route for logged in users Route::get('/', array('before' => 'auth', function() { return 'logged in!'; })); // for normal users without auth Route::get('/', function() { return 'not logged in!'; }));
Вышеприведенный код работает до такой степени, что, как зарегистрированный пользователь, я могу отобразить правильный ответ, но после выхода из системы я не вижу правильного ответа как обычного пользователя.
Возможно, это что-то, что должно быть обработано в контроллере? Если бы кто-то мог указать мне в правильном направлении, это было бы очень полезно.
Один (простой) вариант должен был бы использовать функцию Auth::check()
чтобы проверить, вошли ли они в систему:
Route::get('/', function() { if (Auth::check()) { return 'logged in!'; } else { return 'not logged in!'; } });
Если хотите, вы сможете использовать ту же логику в контроллере.
EDIT – использование фильтров
Если вы хотите сделать это в фильтре, вы можете использовать что-то вроде этого:
Route::filter('auth', function() { if (Auth::guest()) { return Redirect::to('non-admin-home'); } });
а затем определить второй маршрут (или действие в вашем контроллере) для обработки обычных пользователей. Хотя это означало бы другой URL-адрес страницы, который я не думаю, что вы хотите.
ПОЛНЫЙ КОНТРОЛЛЕР-НАПРАВЛЯЮЩИЙ ПОТОК: (сохранение routes.php
clean)
routes.php
Route::controller('/', 'IndexController');
IndexController.php
class IndexController extends BaseController { // HOME PAGE public function getIndex() { if (Auth::check()) { return View::make('admin.home'); } else { return View::make('user.home'); } } }