In this tutorial we will discuss laravel custom middleware. Middleware example in laravel 9, laravel 8, laravel 7. what is middleware in laravel.
what is middleware in laravel
middleware is work like a bridge between request and response. Middleware is verify that user is authenticate or not for a particular request if user not authenticate it send error or redirect to other page.
Steps to create laravel middleware
Step 1 create AdminAccess mddleware
we create a middleware which is only pass request if its send by admin-login user.
php artisan make:middleware AdminAccess
After running above command a middleware create on this directory app/Http/Middleware/AdminAccess.php
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class AdminAccess{ /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->type == 'admin') { return $next($request); } else{ Auth::logout(); return redirect()->route('admin.login'); } } }
This middleware check requested user must have login and its type became admin
Step 2 Register middleware in kernal.php
after created laravel custom middleware we define it in kernal.php
app/Http/kernal.php<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel{ .... protected $routeMiddleware = [ 'adminAccess' => \App\Http\Middleware\AdminAccess::class, ]; }
Step 3 add route
Now we make a route group and use middleware here.
Route::middleware('adminAccess')->group(function(){ Route::get('userlisting', [UserController::class, 'index'])->name('user.index'); }); Route::get('login', [UserController::class, 'login'])->name('admin.login');
Step 4 make a controller
app/Http/Controllers/UserController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function index(){ dd('user listing page'); } public function login(){ dd('admin login page'); } }