Inside this article we will see the concept i.e How To Work with Group Middleware in Laravel 10 Tutorial. Article contains the classified information i.e What is Group Middleware & How to use it in Laravel 10 application.
In Laravel, Middleware is a mechanism that allows developers to filter HTTP requests coming into their application. Group Middleware, specifically, refers to a set of Middleware that is applied to a group of routes in your Laravel application.
In laravel we have three types of middlewares –
- Global Middleware
- Group Middleware
- Route Middleware
Inside this article, we will see the concept of Group Middleware in Laravel 10 application.
Read More: How To Work with Global Middleware in Laravel 10 Tutorial
Let’s get started.
Laravel Installation
Open terminal and run this command to create a laravel project.
composer create-project laravel/laravel myblog
It will create a project folder with name myblog inside your local system.
To start the development server of laravel –
php artisan serve
URL: http://127.0.0.1:8000
Assuming laravel already installed inside your system.
What is Group Middleware?
Group Middleware allows developers to apply common filtering logic to a specific set of routes, without having to manually apply the Middleware to each individual route.
This can be particularly useful in situations where you have a set of routes that require a specific type of filtering or processing, such as authentication or role-based access control.
By the help of php artisan command, we create Middleware in laravel.
$ php artisan make:middleware <MiddlewareName>
Middlewares will be stored inside /app/Http/Middleware. To register middleware inside application, Kernel.php file will be used which is inside /app/Http. Kernel.php, it’s a class file which contains registration of middlewares.
Read More: Laravel 10 Scout How To Add Full Text Search in Table
Example – Group Middleware Implementation
Let’s take an example to understand the concept of group middleware inside laravel application.
- Create a Middleware which checks country, when we open URL.
- Example We will have 3 routes in which two routes should be protected by middleware and third one is open to access for everyone.
- US, IN, AFG should be allowed inside application, they can access application routes.
- UK, AUS should be restricted to use or access route.
Create a Middleware
Open project into terminal and run this artisan command.
$ php artisan make:middleware CountryCheck
It will create a file with name CountryCheck.php inside /app/Http/Middleware folder.
Open CountryCheck.php file and write this following code into it.
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CountryCheck { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { if ($request->country && !in_array($request->country, array("us", "in", "afg"))) { return redirect("noaccess"); } return $next($request); } }
If request $request->country is NOT in list of these (US, IN, AFG) then it will open no access page.
Register Middleware in Application
Open Kernel.php from /app/Http. Search for $middlewareGroups and add this.
protected $middlewareGroups = [
//...
'apprestrict' => [
\App\Http\Middleware\CountryCheck::class,
],
//...
];
apprestrict is the name of group middleware.
Read More: Laravel 10 YajraBox Server Side Datatable Tutorial
Create NoAccess & Protected Routes
Open web.php from /routes and add these route into it.
//... Route::view("noaccess", "noaccess"); Route::get("route-1", function(){ echo "<h3>Welcome To Route 1</h3>"; }); // Protected group by middleware Route::group(["middleware" => ["apprestrict"]], function(){ Route::get("route-2", function(){ echo "<h3>Welcome To Route 2</h3>"; }); Route::get("route-3", function(){ echo "<h3>Welcome To Route 3</h3>"; }); }); //...
Next, we need to create noaccess.blade.php file.
Create NoAccess Page
Create a file called noaccess.blade.php inside /resources/views folder. Open file and write this simple code into it.
<h3>Sorry! You have no access to open this page.</h3>
Application Testing
Run this command into project terminal to start development server,
php artisan serve
Normal Routes
URL – http://127.0.0.1:8000/route-1/?country=us
*** Welcome To Route 1 ***
URL – http://127.0.0.1:8000/route-1/?country=uk
*** Welcome To Route 1 ***
Protected Routes
URL – http://127.0.0.1:8000/route-2/?country=us
*** Welcome To Route 2 ***
URL – http://127.0.0.1:8000/route-2/?country=uk
Output:
Sorry! You have no access to open this page.
We hope this article helped you to learn about How To Work with Group Middleware in Laravel 10 Tutorial in a very detailed way.
Read More: Laravel 10 Step By Step Stub Customization Tutorial
If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.