2
votes

I am new to laravel and so I was trying to create a small project for learning purpose. I have used the inbuilt Auth for login and register. These automatically generated pages work so well, now In this I created a route to resource posts by using controller called postcontroller.

Now in the postcontroller I check if the user is authorized to return a view: posts else to login page. So to check it I do following

if (!Auth::guest())

return view('posts');

else

return "......";

Now here the Auth::guest() returns true for both logged in and logged out users.

4
does your route have the 'web' middleware applied?lagbox
Yes Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home's,'homecontroller@index);rranj

4 Answers

2
votes

Are you sure that you are logged in?

try to dump your Auth::user() data with

dd(Auth::user());

And by the way, if you are returning in the if statement you do not need to use else.

0
votes

You need to make sure you use the 'web' middleware. By default, the home page does not use this but the /home route does, which is why the blade templates work under /home.

Add the 'web' middleware and dd(Auth::user()) and you'll see better results.

0
votes

But You MUST add this line of code for the middleware to know in postcontroller that it needs for check for logged in users.Add this is PostController:

public function __construct()
{

    $this->middleware('auth', ['except' => ['index', 'show']]);
}

After this you need to make sure the routes are added onto the route list. This is done by adding the given line in Routes/web.php

Route::resource('user','PostController');

recheck if its added by typing the below command in terminal:

php artisan route:list

Once the route is added, the controllers know they can talk to each other, you are all set.

Note: Except means user can access ONLY index and show routes if user is logged in . Look at laravel documentation here for more details. Hope this helps.

0
votes

you can use

if(!Auth::user())

//user not login

else

//user logined