Package Data | |
---|---|
Maintainer Username: | david.mathews |
Maintainer Contact: | jimmy.puckett@spinen.com (Jimmy Puckett) |
Package Create Date: | 2015-11-10 |
Package Last Update: | 2024-04-08 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-14 15:04:36 |
Package Statistics | |
---|---|
Total Downloads: | 43,011 |
Monthly Downloads: | 136 |
Daily Downloads: | 1 |
Total Stars: | 20 |
Total Watchers: | 9 |
Total Forks: | 3 |
Total Open Issues: | 2 |
This is a Laravel 5 middleware to filter routes based on browser types.
We specify the browsers that we are going to support at the beginning of a project, so this package makes sure that the visitor is using a supported browser.
| Branch | Status | Coverage | Code Quality | | ------ | :----: | :------: | :----------: | | Develop | | | | | Master | | | |
As side from Laravel >= 5.5, there are 2 packages that are required:
Install Browser Filter:
$ composer require spinen/laravel-browser-filter
The package uses the auto registration feature of Laravel 5.
'providers' => [
// ...
Spinen\BrowserFilter\FilterServiceProvider::class,
];
The middleware needs to be registered with the Kernel to allow it to parse the request.
Register the HTTP Stack Middleware for the web group in app/Http/Kernel.php
:
protected $middlewareGroups = [
'web' => [
// ..
\Spinen\BrowserFilter\Stack\Filter::class,
],
// ..
Register the Route Middlewares in app/Http/Kernel.php
:
protected $routeMiddleware = [
// ..
'browser.allow' => \Spinen\BrowserFilter\Route\AllowFilter::class,
'browser.block' => \Spinen\BrowserFilter\Route\BlockFilter::class,
Build a page with a named route to redirect blocked browsers to:
// This is only a simple example. You would probably want to route to a controller with a view.
Route::get('incompatible_browser', ['as' => 'incompatible_browser', 'uses' => function() {
return "You are using a blocked browser.";
}]);
Publish the package config file to config/browserfilter.php
:
$ php artisan vendor:publish --provider="Spinen\BrowserFilter\FilterServiceProvider"
This file is fully documented, so please read it to know how to configure the middleware. There are 4 top level items that you can configure...
The route middleware uses the same configuration file as the stack middleware, but ignores the rules.
The rules are passed in after the ':' behind the route filter that you wish to use...
Route::get('tablet_page', [
'middleware' => 'browser.allow:Tablet',
'uses' => function () {
return "Special page that is only accessible to tablets";
}
]);
or
Route::get('ie_is_blocked_page', [
'middleware' => 'browser.block:Other/Ie',
'uses' => function () {
return "Special page that is only accessible to non IE browsers on Desktops";
}
]);
The format of the filter is Device/Browser/operatorVersion|operatorVersion2;Device/Browser2/operatorVersion
, so the following rule:
$rule = [
'Mobile' => '*',
'Other' => [
'Ie' => [
'<' => '10',
'>' => '13',
],
],
'Tablet' => '*',
]
would be written as: Mobile;Other/Ie/<10|>13;Tablet
.