configureHttps(); $this->configurePasswordValidation(); $this->configureCommands(); $this->configureModels(); $this->configureDates(); $this->configureTests(); $this->configureRequestExceptions(); $this->configureVite(); } /** * Configure HTTPS for production. */ private function configureHttps(): void { if (App::isProduction() && (bool) config('app.force_https')) { URL::forceScheme('https'); } } /** * Configure password validation for production. */ private function configurePasswordValidation(): void { if (App::isProduction()) { Password::defaults(fn () => Password::min(12) ->letters() ->mixedCase() ->numbers() ->symbols() ->uncompromised()); } } /** * Configure commands for production. */ private function configureCommands(): void { if (App::isProduction()) { DB::prohibitDestructiveCommands(); } } /** * Configure models. */ private function configureModels(): void { Model::automaticallyEagerLoadRelationships(); if (! App::isProduction()) { Model::preventLazyLoading(); } Model::preventSilentlyDiscardingAttributes(); Model::preventAccessingMissingAttributes(); Model::unguard(); Relation::enforceMorphMap([ // Add you polymorphic relations here. For example: // 'application' => \App\Models\Application::class, ]); } /** * Configure dates. */ private function configureDates(): void { Date::use(CarbonImmutable::class); } /** * Configure tests. */ private function configureTests(): void { if (App::runningUnitTests()) { Sleep::fake(); Http::preventStrayRequests(); } } /** * Configure request exceptions. */ private function configureRequestExceptions(): void { if (! App::isProduction()) { RequestException::dontTruncate(); } } /** * Configure Vite for better performance. */ private function configureVite(): void { Vite::useAggressivePrefetching(); } }