I am new to laravel. I have been working on a laravel 5 app with different types of users. I need information about which type of user is currently logged in different sections of my views:
Currently, I have been doing something like below on various controller methods and with the user object, I can determine which type of user it is in my view:
In Controller:
public function someMethod(){
$user = Auth::user();
return view('applications.show', compact('user'));
}
In View:
if($user->is_manager)
// do this
else if($user->is_admin)
// do that
Because I need information about the user-type in various views, I have been calling Auth::user()
in several places and I am beginning to think that this is adding some load on the DB. Is it better to store the user-type in a session variable and what kind of data should I be storing in my session?
It wouldn't be an issue storing it in the session.
In the is_manager
function in your User
class, you could do something like the following...
public function is_manager()
{
// Check if the session has been set first.
if(\Session::has('is_manager')) {
return \Session::get('is_manager');
}
// Do your necessary logic to determine if the user is a manager, ex...
$is_manager = $this->roles()->where('name', '=', 'manager')->count() == 1;
// Drop it in the session
\Session::put('is_manager', $is_manager);
return $is_manager;
}
Keep in mind if your session driver is set to database, then this obviously isn't going to help.
We have organized common model calls as follows;