Search code examples
laravellaravel-livewirelivewires

Middleware is not working (Laravel Livewire)


Middleware is not working (Laravel Livewire) I am trying to authenticate user using custom auth in laravel livewire but it is not working. It opens all the route whether user is authenticated or not

CustomAuth (This is my middleware file)

<?php
namespace App\Http\Middleware;

use Closure;
use Session;
use Illuminate\Http\Request;
class CustomAuth
{
    public function handle(Request $request, Closure $next)
    {
        $path = $request->path();
        if(($path=='login' ||$path=='register') && Session::get('user'))
        {
            return redirect()->route('/userpanel');
        }
        else if(($path!='login' && !Session::get('user')) && ($path!='register' && !Session::get('user')))
        {
            return redirect()->route('/login');
        }
        return $next($request);
    }
}

Kernal.php (It is the Registration of middleware)

<?php

namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            //  \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'customauth' => \App\Http\Middleware\CustomAuth::class,
    ];
}

web.php (This is my Route file)

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Livewire\home;
use App\Http\Livewire\Gallery;
use App\Http\Livewire\Video;
use App\Http\Livewire\Faq;
use App\Http\Livewire\Team;
use App\Http\Livewire\Price;
use App\Http\Livewire\Auth\Login;
use App\Http\Livewire\Auth\Register;
use App\Http\Livewire\Userpanel;




Route::group(['middleware'=>'customauth'],function () { 
    Route::get('/register',Register::class)->name('register');
    Route::get('/login',Login::class)->name('login');
    Route::get('/', Home::class)->name('home')->middleware('auth');    
    Route::get('/gallery',Gallery::class)->name('gallery');
    Route::get('/video',Video::class)->name('video');
    Route::get('/faq',Faq::class)->name('faq');
    Route::get('/team',Team::class)->name('team');
    Route::get('/price',Price::class)->name('price');
    Route::get('/userpanel',Userpanel::class)->name('user');
});

Solution

  • I got it. Middleware is not working because of route cache after running the following command it's work fine

    php artisan route:cache
    

    Thank you @Jesus Emanuel Becerra Santamar and @Mohamed Tahan for helping me!!!