csun-metalab / laravel-force-https
A small Composer package for Laravel 5.0 and above to force HTTPS in the URL
Installs: 6 322
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=5.5.9
README
A small Composer package for Laravel 5.0 and above to force HTTPS in the URL via middleware.
Table of Contents
Installation
Composer, Environment, and Service Provider
Composer
To install from Composer, use the following command:
composer require csun-metalab/laravel-force-https
Environment
Now, add the following line(s) to your .env
file:
FORCE_HTTPS=true
This will enable the forcing functionality.
Service Provider
Add the service provider to your providers
array in config/app.php
in Laravel as follows:
'providers' => [
//...
CSUNMetaLab\ForceHttps\Providers\ForceHttpsServiceProvider::class,
// You can also use this based on Laravel convention:
// 'CSUNMetaLab\ForceHttps\Providers\ForceHttpsServiceProvider',
//...
],
Middleware Installation
Add the middleware to your $middleware
array in app/Http/Kernel.php
to apply it to all requests the application receives:
protected $middleware = [
//...
CSUNMetaLab\ForceHttps\Http\Middleware\ForceHttps::class,
// You can also use this based on Laravel convention:
// 'CSUNMetaLab\ForceHttps\Http\Middleware\ForceHttps',
//...
];
Publish Everything
Finally, run the following Artisan command to publish everything:
php artisan vendor:publish
The following assets are published:
- Configuration (tagged as
config
) - these go into yourconfig
directory
Required Environment Variables
You added an environment variable to your .env
file that controls the protocol the application traffic uses.
FORCE_HTTPS
Whether to force HTTPS on all URLs or not. Default is false
to prevent any unexpected issues from forcing HTTPS directly upon installation.
Middleware
Force HTTPS Middleware
This class is namespaced as CSUNMetaLab\ForceHttps\Http\Middleware\ForceHttps
.
The middleware performs the following steps:
- Checks to see if the application configuration requests traffic to be forced over HTTPS
- If so, it performs the following steps:
- Resolves the request URI as an absolute URL so it can also see the protocol
- Checks to see if the
HTTPS
server variable is a non-empty value or set asoff
- If the protocol isn't already
https:
then it replaces it withhttps:
and returns a redirect
- If not, it passes the request instance to the next configured middleware in the pipeline