Laravel 8 Online Offline Users Example

Hello,

In the present day, i we are going to present you laravel Eight on-line offline customers instance. This text will provide you with easy instance of laravel Eight on-line offline customers instance. you’ll be taught laravel Eight on-line offline customers instance. So let’s comply with few step to create instance of laravel Eight on-line offline customers instance.

Laravel 8 Online Offline Users Example

Step 1: Set up Laravel

we have to set up Laravel 8. So open your terminal OR command immediate and run bellow command:


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

Step 2: Add New Column to Customers Desk

create new migration for including “last_seen” column:


php artisan make:migration add_new_column_last_seen

database/migrations/2021_07_12_032305_add_new_column_last_seen.php


<?php
  
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
  
class AddNewColumnLastSeen extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public operate up()
    {
        Schema::desk('customers', operate(Blueprint $desk){
            $table->timestamp('last_seen')->nullable();
        });
    } 
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public operate down()
    {
          
    }
}

run migration command:


php artisan migrate

simply add last_seen column on person mannequin

app/Fashions/Consumer.php


<?php

namespace AppModels;

use IlluminateContractsAuthMustVerifyEmail;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;

class Consumer extends Authenticatable
{
    use HasFactory, Notifiable;

    /**
     * The attributes which might be mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
	'last_seen',
    ];

    /**
     * The attributes that ought to be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that ought to be solid to native sorts.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}


Step 3: Generate Auth Scaffolding

laravel ui for producing auth scaffolding, so let’s run bellow command:


composer require laravel/ui --dev

putting in composer package deal, run bellow command:


php artisan ui bootstrap --auth

run npm set up instructions:


npm set up
npm run dev

Step 4: Create Middleware

create UserActivity for replace final seen time and add on-line standing, let’s run bellow command:


php artisan make:middleware UserActivity

replace middleware code

app/Http/Middleware/UserActivity.php


<?php
  
namespace AppHttpMiddleware;
  
use Closure;
use IlluminateHttpRequest;
use Auth;
use Cache;
use AppModelsUser;
  
class UserActivity
{
    /**
     * Deal with an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $subsequent
     * @return combined
     */
    public operate deal with(Request $request, Closure $subsequent)
    {
        if (Auth::test()) {
            $expiresAt = now()->addMinutes(2); /* hold on-line for two min */
            Cache::put('user-is-online-' . Auth::person()->id, true, $expiresAt);
  
            /* final seen */
            Consumer::the place('id', Auth::person()->id)->replace(['last_seen' => now()]);
        }
  
        return $subsequent($request);
    }
}

now register, this middleware to kernel file:

app/Http/Kernel.php


<?php

namespace AppHttp;

use IlluminateFoundationHttpKernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The appliance's world HTTP middleware stack.
     *
     * These middleware are run throughout each request to your utility.
     *
     * @var array
     */
    protected $middleware = [
        // AppHttpMiddlewareTrustHosts::class,
        AppHttpMiddlewareTrustProxies::class,
        FruitcakeCorsHandleCors::class,
        AppHttpMiddlewarePreventRequestsDuringMaintenance::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
    ];

    /**
     * The appliance's route middleware teams.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            AppHttpMiddlewareEncryptCookies::class,
            IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
            IlluminateSessionMiddlewareStartSession::class,
            // IlluminateSessionMiddlewareAuthenticateSession::class,
            IlluminateViewMiddlewareShareErrorsFromSession::class,
            AppHttpMiddlewareVerifyCsrfToken::class,
            IlluminateRoutingMiddlewareSubstituteBindings::class,
			AppHttpMiddlewareUserActivity::class,
        ],

        'api' => [
            'throttle:api',
            IlluminateRoutingMiddlewareSubstituteBindings::class,
        ],
    ];

    /**
     * The appliance's route middleware.
     *
     * These middleware could also be assigned to teams or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
        'can' => IlluminateAuthMiddlewareAuthorize::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'password.confirm' => IlluminateAuthMiddlewareRequirePassword::class,
        'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
        'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
    ];
}


Step 5: Create Route

create some routes for show on-line customers operate.

routes/net.php


<?php
  
use IlluminateSupportFacadesRoute;
  
use AppHttpControllersUserController;
  
/*
|--------------------------------------------------------------------------
| Internet Routes
|--------------------------------------------------------------------------
|
| Right here is the place you may register net routes to your utility. These
| routes are loaded by the RouteServiceProvider inside a gaggle which
| comprises the "net" middleware group. Now create one thing nice!
|
*/
Route::get('/', operate () {
    return view('welcome');
});
  
Auth::routes();
  
Route::get('/house', [AppHttpControllersHomeController::class, 'index'])->identify('house');
    
Route::get('online-user', [UserController::class, 'index']);

Step 6: Create Controller

this step, we have to create UserController and add following code:

app/Http/Controllers/UserController.php


<?php
  
namespace AppHttpControllers;
  
use IlluminateHttpRequest;
use AppModelsUser;
  
class UserController extends Controller
{
    /**
     * Show an inventory of the useful resource.
     *
     * @return IlluminateHttpResponse
     */
    public operate index(Request $request)
    {
        $customers = Consumer::choose("*")
                        ->whereNotNull('last_seen')
                        ->orderBy('last_seen', 'DESC')
                        ->paginate(10);
          
        return view('customers', compact('customers'));
    }
}

Step 7: Create Blade Information

create blade information for customers. so let’s create:

assets/views/customers.blade.php


@extends('layouts.app')
  
@part('content material')
<div class="container">
    <h1>Laravel Eight On-line Offline Customers Instance - codeplaners.com</h1>
  <hyperlink rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    <desk class="desk table-bordered data-table">
        <thead>
            <tr>
                <th>No</th>
                <th>Title</th>
                <th>Electronic mail</th>
                <th>Final Seen</th>
                <th>Standing</th>
            </tr>
        </thead>
        <tbody>
            @foreach($customers as $person)
                <tr>
                    <td>{{ $user->id }}</td>
                    <td>{{ $user->identify }}</td>
                    <td>{{ $user->electronic mail }}</td>
                    <td>
                        {{ CarbonCarbon::parse($user->last_seen)->diffForHumans() }}
                    </td>
                    <td>
                        @if(Cache::has('user-is-online-' . $user->id))
                            <span class="text-success">On-line</span>
                        @else
                            <span class="text-secondary">Offline</span>
                        @endif
                    </td>
                </tr>
            @endforeach
        </tbody>
    </desk>
</div>
@endsection

able to run our instance:


php artisan serve

Hope this instance may help you…

Komentar

Postingan populer dari blog ini

PHP 8 Multiple Select Dropdown Example

Laravel 8 Get HTTP Hostname

JQuery Drag And Drop Menu Example