I have recently got into developing with Laravel 4 and I had a question about routes.
For '/', I would like to have two different view pages based on the user's auth status.
If a user is logged in and is viewing '/', I would like to show them a view with admin controls and when a user is viewing '/' as a regular user without logging in, I would like to offer a general information view.
To accomplish this, I've been playing around with filter 'auth' and 'guest' but am having no luck. // 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!';
}));
The above code works to a point where the as a logged in user, I am able to display the proper response but after logging out, I cannot see the proper response as a regular user.
Perhaps this is something that should be handled in the controller? If someone could point me in the right direction, it would be really helpful.
One (simple) option would be to use the Auth::check()
function to see if they are logged in:
Route::get('/', function()
{
if (Auth::check())
{
return 'logged in!';
}
else
{
return 'not logged in!';
}
});
You would be able to use the same logic in the controller if you so wish.
EDIT - using filters
If you wanted to do this in the filter, you could use something like this:
Route::filter('auth', function()
{
if (Auth::guest())
{
return Redirect::to('non-admin-home');
}
});
and then defining a second route (or action in your controller) to handle the normal users. Though this would mean a different url for the page, which I don't think is what you want..
COMPLETE CONTROLLER-BASED ROUTING FLOW: (keeping 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');
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With