'Notice', 'type' => 'placeholder', 'label' => new HtmlString( 'Use this extension to improve your security, manage account suspensions, block VPN/Proxy IPs and block IP addresses from logging in.

Need support? Join our Discord at https://discord.gg/DP3atuhnsB' ), ], [ 'name' => 'auto_suspend_fraud', 'type' => 'checkbox', 'label' => 'Auto-suspend accounts flagged for fraud', 'description' => 'Automatically suspend accounts when fraud is detected', 'default' => false, ], [ 'name' => 'block_vpn_ips', 'type' => 'checkbox', 'label' => 'Block known VPN/Proxy IPs', 'description' => 'Block login attempts from known VPN and proxy services', 'default' => false, ], [ 'name' => 'max_login_attempts', 'type' => 'number', 'label' => 'Max login attempts before IP block', 'description' => 'Number of failed login attempts before temporarily blocking IP', 'default' => 5, ], [ 'name' => 'ip_block_duration', 'type' => 'number', 'label' => 'IP block duration (minutes)', 'description' => 'How long to block an IP after max login attempts', 'default' => 60, ], ]; } catch (Exception $e) { return [ [ 'name' => 'Notice', 'type' => 'placeholder', 'label' => new HtmlString( 'You need to enable this extension before using it.

Need support? Join our Discord at https://discord.gg/DP3atuhnsB' ), ], ]; } } public function enabled() { Artisan::call('migrate', [ '--path' => 'extensions/Others/Security/database/migrations', '--force' => true ]); } public function boot() { app('router')->aliasMiddleware('security.check', \Paymenter\Extensions\Others\Security\Middleware\SecurityCheck::class); if (class_exists(\Filament\Filament::class)) { \Filament\Filament::serving(function () { \Filament\Filament::registerResources([ SuspendedAccountResource::class, BlockedIPResource::class, ]); }); } Event::listen(\Illuminate\Auth\Events\Failed::class, [SecurityLoginListener::class, 'handleFailedLogin']); } }