This article is written to specify on how to create a middleware in Laravel using PHP Artisan command. The command which is actually a tool provided exists and it is located in the root folder of a Laravel web-based application project.
But before creating a middleware in Laravel, just what exactly a middleware is ?. As shown in the documentation page of Laravel, it is stated that middleware is a means or a way which is provided to facilitate for filtering HTTP requests entering the application. It is providing a convenient mechanism for filtering based on for an example whether the user which is sending request has already been authenticated or not.
Normally, in a Laravel-based web application project, the artisan utility which can be executed in a command-line interface is provided. Just execute the following command in the root folder of a Laravel-based web application project :
The output of the above command can be shown as follows :
user@hostname:/var/www/html/laravel$ php artisan Laravel Framework 5.5.4 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Available commands: clear-compiled Remove the compiled class file down Put the application into maintenance mode env Display the current framework environment help Displays help for a command inspire Display an inspiring quote list Lists commands migrate Run the database migrations optimize Optimize the framework for better performance (deprecated) preset Swap the front-end scaffolding for the application serve Serve the application on the PHP development server tinker Interact with your application up Bring the application out of maintenance mode app app:name Set the application namespace auth auth:clear-resets Flush expired password reset tokens cache cache:clear Flush the application cache cache:forget Remove an item from the cache cache:table Create a migration for the cache database table config config:cache Create a cache file for faster configuration loading config:clear Remove the configuration cache file db db:seed Seed the database with records event event:generate Generate the missing events and listeners based on registration key key:generate Set the application key make make:auth Scaffold basic login and registration views and routes make:command Create a new Artisan command make:controller Create a new controller class make:event Create a new event class make:factory Create a new model factory make:job Create a new job class make:listener Create a new event listener class make:mail Create a new email class make:middleware Create a new middleware class make:migration Create a new migration file make:model Create a new Eloquent model class make:notification Create a new notification class make:policy Create a new policy class make:provider Create a new service provider class make:request Create a new form request class make:resource Create a new resource make:rule Create a new validation rule make:seeder Create a new seeder class make:test Create a new test class migrate migrate:fresh Drop all tables and re-run all migrations migrate:install Create the migration repository migrate:refresh Reset and re-run all migrations migrate:reset Rollback all database migrations migrate:rollback Rollback the last database migration migrate:status Show the status of each migration notifications notifications:table Create a migration for the notifications table package package:discover Rebuild the cached package manifest queue queue:failed List all of the failed queue jobs queue:failed-table Create a migration for the failed queue jobs database table queue:flush Flush all of the failed queue jobs queue:forget Delete a failed queue job queue:listen Listen to a given queue queue:restart Restart queue worker daemons after their current job queue:retry Retry a failed queue job queue:table Create a migration for the queue jobs database table queue:work Start processing jobs on the queue as a daemon route route:cache Create a route cache file for faster route registration route:clear Remove the route cache file route:list List all registered routes schedule schedule:run Run the scheduled commands session session:table Create a migration for the session database table storage storage:link Create a symbolic link from "public/storage" to "storage/app/public" vendor vendor:publish Publish any publishable assets from vendor packages view view:clear Clear all compiled view files user@hostname:/var/www/html/laravel$
So, in order to create a middleware, just type the following command using php artisan tool :
user@hostname:/var/www/html/laravel$ php artisan make:middleware AdminMiddleware Middleware created successfully. user@hostname:/var/www/html/laravel$
The middleware in this case will created and it will be stored normally in a path of ‘app/Http/Middleware’.
user@hostname:/var/www/html/laravel/app/Http/Middleware$ pwd /var/www/html/laravel/app/Http/Middleware user@hostname:/var/www/html/laravel/app/Http/Middleware$ ls -al total 32 drwxrwxr-x 2 www-data user 4096 Nov 3 08:02 . drwxrwxr-x 4 www-data user 4096 Aug 30 16:55 .. -rw-rw-r-- 1 user user 335 Nov 3 08:02 AdminMiddleware.php -rwxrwxr-x 1 www-data user 294 Aug 30 16:55 EncryptCookies.php -rwxrwxr-x 1 www-data user 523 Aug 30 16:55 RedirectIfAuthenticated.php -rwxrwxr-x 1 www-data user 340 Aug 30 16:55 TrimStrings.php -rwxrwxr-x 1 www-data user 697 Aug 30 16:55 TrustProxies.php -rwxrwxr-x 1 www-data user 307 Aug 30 16:55 VerifyCsrfToken.php user@hostname:/var/www/html/laravel/app/Http/Middleware$
Where in the context of the above output, the root folder of the Laravel-based web application project is in the ‘/var/www/html/laravel’.