Session support
Session based authentication as the name implies, creates and manages a session during the authentication process to track the user's logged in state. Leaf auth provides an easy and developer friendly approach to handle this.
To get started with session support, just set the USE_SESSION config to true.
auth()->config('USE_SESSION', true);
A much simpler way would be to simply call the useSession method.
auth()->useSession();
Session methods
Enabling session support allows you to use some special methods and behaviours which are not available with the regular JWT authentication.
guard
The guard method works sort of like authentication middleware. It takes in a single param, an array holding the authentication state or the type of guard to load up.
auth()->guard('auth');
// or
Leaf\Auth::guard('auth');
// guest route redirects to home
// route if you're logged in
Leaf\Auth::guard('guest');
The guard method
You can directly run a guard on the guard method.
guard('guest');
length
With length, you can get how long a user has been logged in. You can save the session time logs to your database in order to track users' login logs. The available logs are SESSION_STARTED_AT and SESSION_LAST_ACTIVITY which are automatically tracked by Leaf.
$sessionDuration = auth()->length();
lastActive
lastActive allows you to get how much time has passed since the last session activity.
$userLastSeen = auth()->lastActive();
refresh
As the name implies, you can refresh the session with this method. Refreshing sort of restarts the session, but you can keep the user's old session data if you wish to.
if ($newAccountAdded) {
// will delete old session data
Leaf\Auth::refresh();
} else {
// will keep session data
auth()->refresh(false);s
}
status
status checks whether a user session is ongoing by looking for keys specific to Leaf session auth so it doesn't confuse a Leaf auth session with user defined sessions. Returns the user if a session is found and false if there's no session found.
if (auth()->status()) {
return 'logged in';
} else {
return 'guest mode';
}
logout
Of course we'll need a method to logout/end our session. This is just the method for that.
auth()->logout();
You can also pass in a route to redirect to after logging out.
auth()->logout('/home');
