mailwolt/app/Providers/AppServiceProvider.php

75 lines
2.4 KiB
PHP

<?php
namespace App\Providers;
use App\Support\SettingsRepository;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
$this->app->singleton(SettingsRepository::class, fn() => new SettingsRepository());
}
/**
* Bootstrap any application services.
*/
public function boot(\App\Support\SettingsRepository $settings): void
{
try {
$S = app(\App\Support\SettingsRepository::class);
// 🕒 Zeitzone
if ($tz = $S->get('system.timezone')) {
config(['app.timezone' => $tz]);
date_default_timezone_set($tz);
}
// 🌐 Sprache
if ($locale = $S->get('system.locale')) {
app()->setLocale($locale);
}
// 🌍 Domain / URL
if ($domain = $S->get('app.domain')) {
$scheme = $S->get('app.force_https', true) ? 'https' : 'http';
config(['app.url' => "{$scheme}://{$domain}"]);
URL::forceRootUrl(config('app.url'));
if ($scheme === 'https') {
URL::forceScheme('https');
}
}
} catch (\Throwable $e) {
// Keine Exceptions beim Booten, z. B. wenn DB oder Redis noch nicht erreichbar sind
// \Log::warning('settings.boot_failed', ['msg' => $e->getMessage()]);
}
}
// public function boot(SettingsRepository $settings): void
// {
// try {
// $S = app(\App\Support\SettingsRepository::class);
// if ($tz = $S->get('app.timezone')) {
// config(['app.timezone' => $tz]);
// date_default_timezone_set($tz);
// }
// if ($domain = $S->get('app.domain')) {
// // Falls du APP_URL dynamisch überschreiben willst:
// $scheme = $S->get('app.force_https', true) ? 'https' : 'http';
// config(['app.url' => $scheme.'://'.$domain]);
// URL::forceRootUrl(config('app.url'));
// if ($scheme === 'https') {
// URL::forceScheme('https');
// }
// }
// } catch (\Throwable $e) {
// // Im Bootstrap/Wartungsmodus still sein
// }
// }
}