app->bind(BusinessRepository::class, CompatibleBusinessRepository::class); } /** * Bootstrap any application services. */ public function boot(): void { $this->configureDefaults(); Gate::define('manage-portal', fn (User $user) => $user->hasVerifiedEmail() && in_array(strtolower($user->email), config('portal.managers', []), true)); foreach ([Sector::class, Opportunity::class] as $model) { $invalidate = function () { Cache::forget('portal_home_pt'); Cache::forget('portal_home_en'); Cache::forget('portal_home_v2_pt'); Cache::forget('portal_home_v2_en'); }; $model::saved($invalidate); $model::deleted($invalidate); } RateLimiter::for('api', fn (Request $request) => Limit::perMinute(60)->by($request->ip())); } /** * Configure default behaviors for production-ready applications. */ protected function configureDefaults(): void { Date::use(CarbonImmutable::class); DB::prohibitDestructiveCommands( app()->isProduction(), ); Password::defaults(fn (): ?Password => app()->isProduction() ? Password::min(12) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised() : null, ); } }