app->bind(\Illuminate\Contracts\Auth\StatefulGuard::class, function () { return \Illuminate\Support\Facades\Auth::guard('web'); }); $this->app->bind(AuthorizationViewResponse::class, function () { return new SimpleViewResponse('passport::authorize'); }); } public function boot(): void { Vite::prefetch(concurrency: 3); Gate::policy(User::class, UserPolicy::class); // super-admin bypasses all gates Gate::before(function (User $user, string $ability) { if ($user->hasRole('super-admin')) { return true; } }); // Dynamic password rules driven by system settings Password::defaults(function () { $settings = Cache::get('system_settings', []); $rule = Password::min((int) ($settings['password_minimum_length'] ?? 8)); if (filter_var($settings['password_require_symbols'] ?? false, FILTER_VALIDATE_BOOLEAN)) { $rule->symbols(); } if (filter_var($settings['password_require_numbers'] ?? false, FILTER_VALIDATE_BOOLEAN)) { $rule->numbers(); } if (filter_var($settings['password_require_mixed_case'] ?? false, FILTER_VALIDATE_BOOLEAN)) { $rule->mixedCase(); } return $rule; }); } }