Middleware classes for Laravel
Install the saritasa/laravel-middleware
package:
$ composer require saritasa/laravel-middleware
Optionally
If you use Laravel 5.4 or less,
or 5.5+ with package discovery disabled,
add the MiddlewareServiceProvider in config/app.php
:
'providers' => array(
// ...
Saritasa\Middleware\MiddlewareServiceProvider::class,
)
It will register default aliases (middleware-key) for all middleware classes
Alternatively, you can just register selected middleware classes in App\Http\Kernel.php yourself
See https://laravel.com/docs/middleware#registering-middleware
ClassName / middleware-key
This middleware has 2 effects:
- If user tries to access website over HTTP protocol, redirect him to HTTPS.
- If request already is made over SSL, force HTTPS URL schema for all generated URLs.
Exception: if APP_ENV is set to 'local'.
This solves 2 problems:
- Application can be accessed via insecure protocol
- When application is behind proxy or load balancer, which terminates SSL, standard Laravel classes do not detect it correctly, and generate HTTP links to static resources (JS, CSS) - as result browser blocks them as insecure.
Insert HTTP headers, preventing content caching on proxy or in browser.
Checks, that user has role = 'admin'. If not, access is denied.
If request was not made via AJAX (with XMLHttpRequest), return 'Bad Request' error.
- Create fork, checkout it
- Develop locally as usual. Code must follow PSR-1, PSR-2 - run PHP_CodeSniffer to ensure, that code follows style guides
- Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
- Update README.md to describe new or changed functionality
- Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
- When ready, create pull request
If you have GNU Make installed, you can use following shortcuts:
make cs
(instead ofphp vendor/bin/phpcs
) - run static code analysis with PHP_CodeSniffer to check code stylemake csfix
(instead ofphp vendor/bin/phpcbf
) - fix code style violations with PHP_CodeSniffer automatically, where possible (ex. PSR-2 code formatting violations)make test
(instead ofphp vendor/bin/phpunit
) - run tests with PHPUnitmake install
- instead ofcomposer install
make all
or justmake
without parameters - invokes described above install, cs, test tasks sequentially - project will be assembled, checked with linter and tested with one single command