Laravel 9 Create Custom Middleware Example
Tags: laravel9, middleware, php, codenewbie
Published: 2022-12-15 05:30:00

In this article, we will see laravel 9 create a custom middleware example. 

Here, we will learn about how to create middleware in laravel 9 and how to use middleware in laravel 9. 

Laravel middleware provides a convenient mechanism for inspecting and filtering HTTP requests entering your application.

For example, Laravel includes a middleware that verifies the user of your application is authenticated. 

If the user is not authenticated, the middleware will redirect the user to your application's login screen. if the user is authenticated, the middleware will allow the request to proceed further into the application. 

If your projects have multiple users then we need to use middleware to provide different access or login to different users.

So, let's see how to create custom middleware in laravel 9, laravel 9 custom middleware.

In this example, we have created "roleType" middleware and we will use it simply on the route when the route will run you must have to pass the "type" parameter, and then you can access those requests as below in the demo link.

```
http://localhost:8000/check/role?type=user
http://localhost:8000/check/role?type=admin
``` 

> Step 1: Create Middleware

In this step, we will create custom middleware. So, run the following command in the terminal and create a middleware.

```
php artisan make:middleware RoleType
``` 

---

**_[Read Also: How To Create Barcode Generator In Laravel 9](https://techsolutionstuff.com/post/how-to-create-barcode-generator-in-laravel-9)_**

--- 

After running the above command, RoleType.php is created.

app/Http/Middleware/RoleType.php

```
<?php

namespace App\Http\Middleware;

use Closure;

class RoleType
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->type != 'admin') {
            return response()->json('You do not have access!!');
        }

        return $next($request);
    }
}
``` 

> Step 2: Register Middleware on Kernel File

Now, we have to register role type middleware on the kernel file.

app/Http/Kernel.php

```
protected $routeMiddleware = [
        ...
        'roleType' => \App\Http\Middleware\RoleType::class,
    ];
``` 

> Step 3: Add Route

Now, add the route and add RoleType middleware in routes. Also, you can add middleware to the group of routes. 

```
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('check/role',[UserController::class,'checkRole'])->middleware('roleType');
``` 

> Step 4:  Add Controller

In this step, we will create UserController with a checkRole function.

```
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function checkRole()
    {
        dd('checkRole');
    }
}
``` 

---

**_[Read Also: How To Upload Image In Summernote Editor In Laravel 9](https://techsolutionstuff.com/post/how-to-upload-image-in-summernote-editor-in-laravel-9)_**
 
---

Now, it's time to run this example. add the below link to your URL and get the output.

```
http://localhost:8000/check/role?type=user
http://localhost:8000/check/role?type=admin
```