This is post describes how to check user online or not in Laravel without storing any token in the database. we check user online or not based on recent activity using middleware.
Some developers use a token to store in the users’ table when the user login and deletes token when the user logs out but what happens when the user, not logs out but closes the tab or maybe not on PC or system.
Here use a proper method to use know user online or not we also seta time duration if the user does not do any activity duration set time. so let’s start
Step:1 Create a new project
If you work on an existing project you can skip this process.
Create a new Laravel project using this command.
laravel new userOnline
Step:2 Setup database and migrate table
In the second step we setup database connection in the .env file than migrate table using this command.
php artisan migrate
After that fill some dummy data in the user table to check users online or not in Laravel.
Step: 3 create a middleware
Create a middleware LastUserActivity using this command.
php artisan make:middleware LastUserActivity
Add some code check user online or not
App\Http\Middleware\LastUserActivity .php
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use Cache;
use Carbon\Carbon;
class LastUserActivity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check()) {
$expiresAt = Carbon::now()->addMinutes(1);
Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
}
return $next($request);
}
}
Step: 4 Add a class into Kernel
Add a class into Kernal file in middlewareGroups
\App\Http\Middleware\LastUserActivity::class,
full code of $middlewareGroups
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\LastUserActivity::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
Step: 5 Add a function into the User Model
public function isOnline()
{
return Cache::has('user-is-online-' . $this->id);
}
Ok, We almost are done now time to check.
Don’t forget to add use Cache in User Model At the top;
use Cache;
Step: 6 Check user Online or offline in Laravel application
Use the isOnline function in view.
@if($user->isOnline())
user is online!!
@endif

Brijpal Sharma is a web developer with a passion for writing tech tutorials. Learn JavaScript and other web development technology.