diff --git a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php index 3d3d37e0..bc6b8fcb 100644 --- a/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportIncidentCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\ReportIncidentCommand; use CachetHQ\Cachet\Events\Incident\IncidentWasReportedEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; @@ -40,7 +39,7 @@ class ReportIncidentCommandHandler // The incident occurred at a different time. if ($command->incident_date) { - $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, Setting::get('app_timezone'))->setTimezone(Config::get('app.timezone')); + $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, config('cachet.timezone'))->setTimezone(Config::get('app.timezone')); $incident->update([ 'created_at' => $incidentDate, diff --git a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php index b9542191..9fe832b7 100644 --- a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php +++ b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand; use CachetHQ\Cachet\Events\Incident\MaintenanceWasScheduledEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; use Jenssegers\Date\Date; @@ -30,7 +29,7 @@ class ReportMaintenanceCommandHandler public function handle(ReportMaintenanceCommand $command) { // TODO: Add validation to scheduledAt - $scheduledAt = Date::createFromFormat('d/m/Y H:i', $command->timestamp, Setting::get('app_timezone')) + $scheduledAt = Date::createFromFormat('d/m/Y H:i', $command->timestamp, config('cachet.timezone')) ->setTimezone(Config::get('app.timezone')); $maintenanceEvent = Incident::create([ diff --git a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php index ef25992c..015c984a 100644 --- a/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php +++ b/app/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Handlers\Commands\Incident; use CachetHQ\Cachet\Commands\Incident\UpdateIncidentCommand; use CachetHQ\Cachet\Events\Incident\IncidentWasUpdatedEvent; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\Incident; use Illuminate\Support\Facades\Config; @@ -35,7 +34,7 @@ class UpdateIncidentCommandHandler // The incident occurred at a different time. if ($command->incident_date) { - $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, Setting::get('app_timezone'))->setTimezone(Config::get('app.timezone')); + $incidentDate = Date::createFromFormat('d/m/Y H:i', $command->incident_date, config('cachet.timezone'))->setTimezone(Config::get('app.timezone')); $incident->update([ 'created_at' => $incidentDate, diff --git a/app/Http/Controllers/Dashboard/ScheduleController.php b/app/Http/Controllers/Dashboard/ScheduleController.php index 3e7f94aa..8b710788 100644 --- a/app/Http/Controllers/Dashboard/ScheduleController.php +++ b/app/Http/Controllers/Dashboard/ScheduleController.php @@ -13,7 +13,6 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard; use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand; -use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Incident; use CachetHQ\Cachet\Models\IncidentTemplate; use GrahamCampbell\Binput\Facades\Binput; @@ -140,7 +139,7 @@ class ScheduleController extends Controller { $scheduleData = Binput::get('incident'); // Parse the schedule date. - $scheduledAt = Date::createFromFormat('d/m/Y H:i', $scheduleData['scheduled_at'], Setting::get('app_timezone')) + $scheduledAt = Date::createFromFormat('d/m/Y H:i', $scheduleData['scheduled_at'], config('cachet.timezone')) ->setTimezone(Config::get('app.timezone')); if ($scheduledAt->isPast()) { diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index b5cdc265..462a193b 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -46,6 +46,7 @@ class Kernel extends HttpKernel 'csrf' => 'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken', 'guest' => 'CachetHQ\Cachet\Http\Middleware\RedirectIfAuthenticated', 'localize' => 'CachetHQ\Cachet\Http\Middleware\Localize', + 'timezone' => 'CachetHQ\Cachet\Http\Middleware\Timezone', 'throttling' => 'GrahamCampbell\Throttle\Http\Middleware\ThrottleMiddleware', ]; } diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php new file mode 100644 index 00000000..15ddc9cd --- /dev/null +++ b/app/Http/Middleware/Timezone.php @@ -0,0 +1,35 @@ +header('Time-Zone')) { + app('config')->set('cachet.timezone', $tz); + } + + return $next($request); + } +} diff --git a/app/Http/Routes/ApiRoutes.php b/app/Http/Routes/ApiRoutes.php index 4906133e..fd924244 100644 --- a/app/Http/Routes/ApiRoutes.php +++ b/app/Http/Routes/ApiRoutes.php @@ -30,7 +30,7 @@ class ApiRoutes $router->group([ 'namespace' => 'Api', 'prefix' => 'api/v1', - 'middleware' => 'accept:application/json', + 'middleware' => ['accept:application/json', 'timezone'], ], function ($router) { // General $router->get('ping', 'GeneralController@ping'); diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php index 0a25dc33..5848759a 100644 --- a/app/Providers/ConfigServiceProvider.php +++ b/app/Providers/ConfigServiceProvider.php @@ -26,12 +26,13 @@ class ConfigServiceProvider extends ServiceProvider */ public function boot() { - $appDomain = $appLocale = null; + $appDomain = $appLocale = $appTimezone = null; try { // Get app custom configuration. $appDomain = Setting::get('app_domain'); $appLocale = Setting::get('app_locale'); + $appTimezone = Setting::get('app_timezone'); // Setup Cors. $allowedOrigins = $this->app->config->get('cors.defaults.allowedOrigins'); @@ -55,6 +56,7 @@ class ConfigServiceProvider extends ServiceProvider // Override default app values. $this->app->config->set('app.url', $appDomain ?: $this->app->config->get('app.url')); $this->app->config->set('app.locale', $appLocale ?: $this->app->config->get('app.locale')); + $this->app->config->set('cachet.timezone', $appTimezone ?: $this->app->config->get('cachet.timezone')); // Set custom lang. $this->app->translator->setLocale($appLocale); diff --git a/config/cachet.php b/config/cachet.php new file mode 100644 index 00000000..b6231302 --- /dev/null +++ b/config/cachet.php @@ -0,0 +1,25 @@ + 'UTC', + +];