tomatophp/filament-developer-gate
Installation:
composer require tomatophp/filament-developer-gate
Publish the config file (if needed):
php artisan vendor:publish --tag="filament-developer-gate-config"
Register Middleware:
Add the middleware to your app/Http/Kernel.php under $routeMiddleware:
'developer.gate' => \TomatoPHP\FilamentDeveloperGate\Http\Middleware\DeveloperGateMiddleware::class,
First Use Case:
Protect a route (e.g., a Filament admin panel route) in routes/web.php:
Route::get('/admin', function () {
return view('filament.app');
})->middleware(['auth:sanctum', 'developer.gate']);
Configure Password:
Set the password in .env:
DEVELOPER_GATE_PASSWORD=your_secure_password_here
Or override in config/filament-developer-gate.php.
Protecting Filament Routes: Apply the middleware to Filament’s admin routes:
Route::group([
'middleware' => ['auth:sanctum', 'developer.gate'],
'prefix' => 'admin',
], function () {
Filament::serving(function () {
// Filament setup
});
});
Dynamic Password Management: Use a config file to manage passwords across environments:
// config/filament-developer-gate.php
'password' => env('DEVELOPER_GATE_PASSWORD'),
'whitelist' => ['127.0.0.1', '192.168.*.*'], // Optional IP whitelisting
Integration with Filament Panels: Extend the middleware to validate Filament’s built-in auth:
// app/Providers/Filament/AdminPanelProvider.php
public function panel(Panel $panel): Panel
{
return $panel
->middleware([
\TomatoPHP\FilamentDeveloperGate\Http\Middleware\DeveloperGateMiddleware::class,
]);
}
Custom Login Blade: Override the default login view by publishing assets:
php artisan vendor:publish --tag="filament-developer-gate-views"
Then modify resources/views/vendor/filament-developer-gate/login.blade.php.
Password Exposure:
config/filament-developer-gate.php. Always use .env.Middleware Order:
developer.gate after auth:sanctum or auth:session to avoid bypassing Filament’s auth entirely.->middleware(['auth:sanctum', 'developer.gate']) // Correct
->middleware(['developer.gate', 'auth:sanctum']) // Incorrect (may fail)
Caching Issues:
php artisan route:clear
IP Whitelisting:
whitelist, ensure your local IP is included. Test with:
'whitelist' => ['127.0.0.1', '::1', '192.168.1.*'],
Login Failures:
.env for correct DEVELOPER_GATE_PASSWORD.Kernel.php.Blade Overrides:
Logs:
config/filament-developer-gate.php:
'debug' => env('APP_DEBUG', false),
storage/logs/laravel.log) for middleware errors.Custom Validation: Extend the middleware to add logic (e.g., time-based access):
// app/Http/Middleware/ExtendedDeveloperGate.php
public function handle($request, Closure $next)
{
if (!$this->isDeveloper($request)) {
return redirect()->route('developer.gate.login');
}
return $next($request);
}
Multi-Factor Integration: Combine with Laravel Fortify for 2FA:
->middleware(['auth:sanctum', 'verified', 'developer.gate'])
Environment-Specific Rules: Use config overrides for different environments (e.g., disable in production):
// config/filament-developer-gate.php
'enabled' => !app()->environment('production'),
How can I help you explore Laravel packages today?