diff --git a/app/Http/Middleware/SetTimezoneMiddleware.php b/app/Http/Middleware/SetTimezoneMiddleware.php index 1ff7ce95..4f501920 100644 --- a/app/Http/Middleware/SetTimezoneMiddleware.php +++ b/app/Http/Middleware/SetTimezoneMiddleware.php @@ -17,14 +17,20 @@ class SetTimezoneMiddleware */ public function handle(Request $request, Closure $next) { - if ( - !collect($request->segments())->contains('nova') - && $request->user() + if ($request->user() && $timezone = $request->user()->timezone ) { - config(['app.timezone' => $timezone]); + config([ + 'app.timezone' => $timezone, + 'app.user-timezone' => $timezone, + ]); + + return $next($request); } - config(['app.timezone' => 'Europe/Berlin']); + config([ + 'app.timezone' => 'Europe/Berlin', + 'app.user-timezone' => 'Europe/Berlin', + ]); return $next($request); } diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index 9e2cac48..60aade98 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -39,6 +39,10 @@ class NovaServiceProvider extends NovaApplicationServiceProvider */ public function boot() { + config([ + 'app.user-timezone' => 'Europe/Berlin', + ]); + parent::boot(); Nova::mainMenu(function (Request $request) { @@ -154,6 +158,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider }); Nova::userTimezone(function (Request $request) { + return $request->user()->timezone; }); } diff --git a/app/Support/Carbon.php b/app/Support/Carbon.php index bb828aa0..76404fa8 100644 --- a/app/Support/Carbon.php +++ b/app/Support/Carbon.php @@ -8,19 +8,19 @@ class Carbon extends CarbonImmutable { public function asDate(): string { - $dt = $this->timezone(config('app.timezone'))->locale('de'); + $dt = $this->timezone(config('app.user-timezone'))->locale('de'); return str($dt->day)->padLeft(2, '0').'. '.$dt->monthName.' '.$dt->year; } public function asTime(): string { - return $this->timezone(config('app.timezone'))->locale('de') + return $this->timezone(config('app.user-timezone'))->locale('de') ->format('H:i'); } public function asDateTime(): string { - $dt = $this->timezone(config('app.timezone'))->locale('de'); + $dt = $this->timezone(config('app.user-timezone'))->locale('de'); return sprintf("%s.%s.%s %s (%s)", str($dt->day)->padLeft(2, '0'), str($dt->month)->padLeft(2, '0'), diff --git a/config/app.php b/config/app.php index ae0c0526..28dfd687 100644 --- a/config/app.php +++ b/config/app.php @@ -73,6 +73,8 @@ return [ 'timezone' => 'UTC', + 'user-timezone' => 'UTC', + /* |-------------------------------------------------------------------------- | Application Locale Configuration