solution-forest / filament-firewall
This is a middleware for whitelisting/blacklisting for Filament Admin
Requires
- php: ^8.0
- akaunting/laravel-firewall: ^2.1
- filament/filament: ^3.0
- filament/support: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- 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
- spatie/laravel-ray: ^1.26
README
Important
Please note that we will only be updating to version 2.x, excluding any bug fixes.
Filament Firewall
This package provides a whitelist and blacklist feature to restrict access to your Laravel application and Filament admin panel. For additional functionality, please refer to the Laravel Firewall package.
Getting Started
-
Install the package using the
composer require
command:composer require solution-forest/filament-firewall
-
To publish the configuration files and migrations files for this plugin, as well as automatically run migration, enter the following command:
php artisan filament-firewall:install
-
This package comes with
WhitelistRangeMiddleware
. You need to register it in$middleware
in theapp\Http\Kernel.php
file:protected $middleware = [ ... \SolutionForest\FilamentFirewall\Middleware\WhitelistRangeMiddleware::class, ];
-
You can change the setting in the
config/filament-firewall.php
file to skip the middlewareWhitelistRangeMiddleware
check. -
Register the plugin in your Panel provider:
Important: Register the plugin in your Panel provider after version 2.x
use SolutionForest\FilamentFirewall\FilamentFirewallPanel; public function panel(Panel $panel): Panel { return $panel ->plugin(FilamentFirewallPanel::make()); }
Usage
- On the IP Firewall page, you have the ability to add IPs to either a whitelist or a blocklist. The
WhitelistRangeMiddleware
middleware will automatically handle whitelist IP access. If you need to block a range of IPs while allowing a specific IP, such as blocking 172.19.0.0/24 except for 172.19.0.1, you'll need to create a new Deny access record and specify the IP and prefix as '172.19.0.0' and '24'. Additionally, you'll need to add an Allow access record for the specific IP '172.19.0.1'.
-
Get whitelist / blacklist records
// whitelist \SolutionForest\FilamentFirewall\Facade\FilamentFirewall::getWhiteList(); // blacklist \SolutionForest\FilamentFirewall\Facade\FilamentFirewall::getBlackList();
-
Determine whether an IP address is included in a whitelist or blacklist
// whitelist \SolutionForest\FilamentFirewall\Facade\FilamentFirewall::withinWhiteList($ip); // blacklist \SolutionForest\FilamentFirewall\Facade\FilamentFirewall::withinBlackList($ip);
Publishing translations
php artisan vendor:publish --tag=filament-firewall-translations
Security Vulnerabilities
If you discover any security related issues, please email info+package@solutionforest.net instead of using the issue tracker.
License
Please see License File for more information.