How to Get Online and Offline Users in Laravel?

By Sumeet Shroff
Last Updated On : February 15, 2023
How to Get Online and Offline Users in Laravel?

Firstly, it is important to understand that Laravel provides a session mechanism that can be used to keep track of user sessions. This mechanism creates a unique session ID for each user and stores it on the server. Whenever a user logs in, a session is created, and when the user logs out, the session is destroyed. By tracking the user's session, we can determine whether they are currently online or not. To get started, we will create a new Laravel project and define a route that will display the list of online users.

Route::get('/online-users', function () {
    // code to get online users
});

In the above code, we have defined a route named "online-users" that will be used to display the list of online users. Next, we will create a new middleware that will be responsible for checking if a user is currently online or not. This middleware will be added to the route we created in the previous step.

php artisan make:middleware OnlineUserMiddleware
public function handle($request, Closure $next)
{
    $user = Auth::user();
    if ($user) {
        Cache::put('user-is-online-' . $user->id, true, 10);
    }
    return $next($request);
}

In the above code, we have defined a middleware named "OnlineUserMiddleware" that checks whether a user is currently online or not. This middleware uses the Laravel's built-in Auth facade to get the current user, and then it uses Laravel's caching system to store the user's online status. The caching time is set to 10 minutes. Finally, we will modify the route we created earlier to display the list of online users.

Route::get('/online-users', function () {
    $users = User::all();
    $onlineUsers = collect([]);
    foreach ($users as $user) {
        if (Cache::has('user-is-online-' . $user->id)) {
            $onlineUsers->push($user);
        }
    }
    return view('online-users', compact('onlineUsers'));
})->middleware('web', 'auth', 'online.user');

In the above code, we have modified the "online-users" route to fetch all users and then iterate over them to determine which ones are currently online. We do this by checking if the caching system has stored the user's online status. If the user is online, we push them into an array of online users. Finally, we pass this array to a view named "online-users" and render it. In conclusion, by following the steps outlined above, you can easily determine whether a user is online or offline on a Laravel-based website. The use of Laravel's built-in session mechanism and caching system simplifies the process and makes it more efficient.

Categories

Latest Blogs

Ready to Amplify Your Services with our Premium White Label Web Design

Are you looking to expand your service offerings without the overhead of an in-house design team? Our white label web design services are the perfect solution. We provide top-notch, fully customizable web designs that seamlessly blend with your brand, allowing you to offer additional value to your clients.
Contact Us Today to Start Partnering with Our White Label Web Design Experts!

We love to provide services in the following cities

© 2024 · Prateeksha Web Design. Built with Gatsby All rights reserved | Privacy Policy
Designed by Prateeksha Web