How to create and use a custom middleware in Laravel 9.
A middleware means that any HTTP request for that route must pass through it, making it good for checking if a user has permissions or meets a criteria etc.
For this example the middleware created will be to check if a session key has been set. If it hasn’t then redirect the user to the page where they can set this session.
With artisan create the middleware with a name
php artisan make:middleware CheckInstanceSet
This will generate:
app/Http/Middleware/CheckInstanceSet.php
Open this file and put your logic for the middleware into the handle() function
public function handle(Request $request, Closure $next)
{
if (Session::has('instance')) {
return $next($request);
}
return redirect()->route('instance.index');
} This means that if a session key for “instance” exists continue with the HTTP request else redirect to the instance set page.
Open app/Http/Kernel.php and find the $routeMiddleware array, this is where you register your middleware with the name and the class
'instance' => \App\Http\Middleware\CheckInstanceSet::class,
Finally, in your routes file assign this middleware by using the name that was used above (instance):
//Needs an instance set to view
Route::get('files', [App\Http\Controllers\FileController::class, 'index'])->middleware(['auth', 'instance']);
Route::get('actions', [App\Http\Controllers\ActionController::class, 'index'])->middleware(['auth', 'instance']);
//Does not need an instance set to view
Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->middleware();
Route::get('instances', [App\Http\Controllers\InstanceController::class, 'index'])->middleware(['auth']); Since you modified your routes make sure to refresh the routes with:
php artisan route:cache
A drained and empty Kennington reservoir images from a drone in early July 2024. The…
Merrimu Reservoir from drone. Click images to view larger.
Using FTP and PHP to get an array of file details such as size and…
Creating and using Laravel form requests to create cleaner code, separation and reusability for your…
Improving the default Laravel login and register views in such a simple manner but making…
Laravel validation for checking if a field value exists in the database. The validation rule…