zeevx / superban
Add the ability to ban a client completely from accessing your app routes for a period of time.
1.0.1
2023-12-22 12:12 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
Laravel Superban .
Add the ability to ban a client completely from accessing your app routes for a period of time.
Installation
You can install the package via composer:
composer require zeevx/superban
You can publish the config file with:
php artisan vendor:publish --tag="superban-config"
To use middleware add them inside your app/Http/Kernel.php :
protected $routeMiddleware = [ 'superban' => \Zeevx\Superban\Middlewares\SuperbanMiddleware::class, ];
This is the contents of the published config file:
return [ /** * Key used in cache * The default is ip_address, you can use either: ip_address or email or user_id * */ 'key' => 'ip_address', /** * The cache to be used, * The default cache in config/cache.php is used if empty. */ 'cache' => 'file', /** * Specify guard to be used if you are using email or user_id * The default guard in config/auth.php is used if empty */ 'user_guard' => '', /** * Enable email notification for when a user is banned * */ 'enable_email_notification' => true, /** * Email address to be used for email notification * */ 'email_address' => '', ];
Usage
Apply the middleware to any route in this format:
X - Number of request
Y - Within what period (in minutes)
Z- How long the user should be banned (in minutes).
Route::middleware(['superban:X,Y,Z])->group(function () { Route::post('/thisroute', function () { // ... }); Route::post('anotherroute', function () { // ... }); });
Testing
composer test
Credits
License
The MIT License (MIT). Please see License File for more information.