Mrunali Khandekar

Mrunali Khandekar

How to display online users in laravel.

Subscribe to my newsletter and never miss my upcoming articles

Now we will list the user that are online using Laravel. Follow the below steps.

1. Install Laravel Project. Type the below code in your terminal.

composer create-project --prefer-dist laravel/laravel UsersOnline

After installation you can see something like below image. install 2.PNG

2. Now Install Auth. To Install Auth type below command in your terminal.

composer require laravel/ui
php artisan ui vue --auth
npm install
npm run dev

3. Create Middleware. To create middleware type below command in terminal.

php artisan make:middleware OnlineStatus

4. Add the below code in Middleware OnlineStatus in app/Http/Middleware/OnlineStatus.

  public function handle(Request $request, Closure $next)
    {
        if(Auth::check()){
            $expiresAt = Carbon::now()->addMinutes(5);
            Cache::put('user-online-'.Auth::user()->id,true,$expiresAt);
        }
        return $next($request);
    }

5. Go to Kernel.php . You will find kernel.php in app/Http/Kernel.php*. Write the below line in web array.

 'web' => [
            \App\Http\Middleware\OnlineStatus::class,
        ],

6. In User Model add the below function in app/Models/User.php.

 public function isOnline(){
        return Cache::has('user-online-'.$this->id);
    }

7. Define route.Add the below code routes/web.php.

route::get('/active-status',[App\Http\Controllers\userController::class,'index']);

8. Create a controller. To create controller type below command in your terminal.

php artisan make:controller userController

9. Add below code in userController in app/Http/Controllers/userController.php.

public function index(){
$users = User::all();
return view('home1',compact('users'));
}

Note: Create a blade file in resources/views and name it home1.blade.php.

10. Go to home1.blade.php. In resources/views/home.blade.php.

  <table class="table">
                    <thead>
                    <tr>
                        <th>Name</th>
                        <th>Email</th>
                        <th>Account Created At</th>
                    </tr>
                    </thead>
                    <tbody>
                    @foreach($users as $user)
                        @if($user->isOnline())
                            <tr>
                                <td>{{$user->name}}</td>
                                <td>{{$user->email}}</td>
                                <td>{{$user->created_at->diffForHumans()}}</td>
                            </tr>
                        @endif
                    @endforeach

                    </tbody>
                </table>

*Register users and keep login a user you will the name of the user who is online on your website.

Now Open your browser and enter link in my case it /active-status.*

 
Share this