Laravel 12 Middleware Group Create and Register
In laravel 12 registering middleware group is little bit different then previous versions. Here in this article we will know how to create middleware group, register that and also use inside our laravel application. For doing this we will below steps.
- Create Laravel 12 Empty Project
- Create Two Middlewares
- Register Middleware Group
- Create Controller
- Create Route for middleware usage
Create Laravel 12 Empty Project
Here we are going to create a new empty laravel 12 . We can create that by below command
composer create-project --prefer-dist laravel/laravel laravel12-middleware 12.* cd laravel12-middleware
Create Two Middlewares
As we will create middleware group, so that's why we need at least two middlewares. Here we will create two middlewares. You can more and register under one group
php artisan make:middleware CheckLogUserActivityMiddleware php artisan make:middleware CheckRoleMiddleware
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckLogUserActivityMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
//todo:: change logic according to need
return $next($request);
}
}namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckRoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
//todo:: change logic according to need
return $next($request);
}
}Register Middleware Group
We have created two middleware class. Now will define our middleware group and give a name according to need. You can use your own name. Open your bootstrap/app.php file and change like below
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__ . '/../routes/web.php',
commands: __DIR__ . '/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->group('customGroupMiddleware', [ //change name according to need
\App\Http\Middleware\CheckRoleMiddleware::class,
\App\Http\Middleware\CheckLogUserActivityMiddleware::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();Create Controller
We will create a demo HomeController for accepting index() method. This method will get request from route file
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index(Request $request)
{
//todo:: do something here
}
}Create Route for middleware usage
We have defined a custom middleware group. Now we will use this in our route file. See below code for getting clear idea.
use App\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;
Route::get('check-route', [HomeController::class,'index'])->middleware([ 'customGroupMiddleware']);
require __DIR__ . '/auth.php';