Search code examples
phplaravelmiddleware

Laravel how to pass parameter to middlleware?


Kernel.php

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

        'isSeller' =>App\Http\Middleware\IsSeller::class,
        'isDealer' =>App\Http\Middleware\IsDealer::class,
    ];

web.php

Route::group(['middleware'=>['isDealer:verified']],function (){
    Route::post("/doc_submit", "DealerController@docSubmit")->name('doc-submit');
});

IsDealer.php

public function handle($request, Closure $next)
    {
        if ( Auth::check() && Auth::user()->isDealer() )
        {
            dd($request->route()->parameters()); // []
            $notification_count = count(Notification::where('user_id','=', Auth::user()->id)->where('seen', '=', 0)->get());

            View::share('notification', $notification_count);

            return $next($request);
        } else {
            return GlobalController::AuthLoginPrompt("dealer");
        }
    }

I need to check user account verification status of that user when they try to submit document, how can I pass parameter to middleware? dd($request->route()->parameters()) return [], how can I get 'verified' as I already write ['middleware'=>['isDealer:verified']]


Solution

  • As per the laravel documentation, Additional middleware parameters will be passed to the middleware after the $next argument, Try:

    public function handle($request, Closure $next, $verify)