diff --git a/app/Console/Commands/UpdateGeneralSettings.php b/app/Console/Commands/UpdateGeneralSettings.php index c9031268f..efd4ee0ac 100644 --- a/app/Console/Commands/UpdateGeneralSettings.php +++ b/app/Console/Commands/UpdateGeneralSettings.php @@ -8,6 +8,7 @@ use Illuminate\Console\Command; use function Laravel\Prompts\confirm; +use function Laravel\Prompts\select; use function Laravel\Prompts\text; class UpdateGeneralSettings extends Command @@ -34,6 +35,7 @@ public function handle() $settings = new GeneralSettings(); $this->updateSiteName($settings); + $this->updatePublicDashboard($settings); $this->updateTimeZone($settings); $this->updateSchedule($settings); $this->resetSevers($settings); @@ -57,12 +59,32 @@ protected function resetSevers($settings): void } } + protected function updatePublicDashboard($settings): void + { + $publicDashboard = select( + label: 'Make the dashboard public?', + options: ['Yes', 'No'], + default: 'Yes', + required: true, + ); + + if ($publicDashboard == 'Yes') { + $settings->public_dashboard_enabled = true; + + $settings->save(); + } else { + $settings->public_dashboard_enabled = false; + } + + $settings->save(); + } + protected function updateSchedule($settings): void { $cron = text( label: 'What is the schedule?', placeholder: '0 * * * *', - default: $settings->speedtest_schedule, + default: $settings->speedtest_schedule ?? '0 * * * *', required: true, validate: fn (string $value) => match (true) { ! CronExpression::isValidExpression($value) => 'The schedule expression is invalid.', diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index 5d1427b1c..a0819609e 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -13,7 +13,6 @@ use Filament\Actions\ActionGroup; use Filament\Notifications\Notification; use Filament\Pages\Dashboard as BasePage; -use Filament\Support\Enums\ActionSize; use Filament\Support\Enums\IconPosition; use Illuminate\Support\Arr; @@ -30,9 +29,11 @@ protected function getHeaderActions(): array return [ Action::make('home') ->label('Public Dashboard') + ->icon('heroicon-o-chart-bar') + ->iconPosition(IconPosition::Before) ->color('gray') - ->hidden(fn (GeneralSettings $settings): bool => ! $settings->public_dashboard_enabled) - ->url('/'), + ->hidden(fn (): bool => ! config('speedtest.public_dashboard')) + ->url(shouldOpenInNewTab: true, url: '/'), ActionGroup::make([ Action::make('ookla speedtest') ->action(function (GeneralSettings $settings) { @@ -55,9 +56,8 @@ protected function getHeaderActions(): array ->dropdownPlacement('bottom-end') ->label('Run Speedtest') ->icon('heroicon-o-rocket-launch') - ->iconPosition(IconPosition::After) - ->hidden(! auth()->user()->is_admin) - ->size(ActionSize::Small), + ->iconPosition(IconPosition::Before) + ->hidden(! auth()->user()->is_admin), ]; } diff --git a/app/Filament/Pages/Settings/GeneralPage.php b/app/Filament/Pages/Settings/GeneralPage.php index 134aa1795..498c91f66 100644 --- a/app/Filament/Pages/Settings/GeneralPage.php +++ b/app/Filament/Pages/Settings/GeneralPage.php @@ -53,7 +53,9 @@ public function form(Form $form): Form ->helperText(new HtmlString('⚠️ DEPRECATED: Use APP_NAME environment variable.')) ->columnSpanFull(), Forms\Components\Toggle::make('public_dashboard_enabled') - ->label('Public dashboard'), + ->label('Public dashboard') + ->disabled() + ->helperText(new HtmlString('⚠️ DEPRECATED: Use PUBLIC_DASHBOARD environment variable.')), ]) ->compact() ->columns([ diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 7ea5aa13f..3f1219c55 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -16,7 +16,7 @@ public function __invoke(Request $request) { $settings = new GeneralSettings(); - if (! $settings->public_dashboard_enabled) { + if (! config('speedtest.public_dashboard')) { return redirect()->route('filament.admin.auth.login'); } diff --git a/app/Settings/GeneralSettings.php b/app/Settings/GeneralSettings.php index 40a294dad..3e5b6ae3c 100644 --- a/app/Settings/GeneralSettings.php +++ b/app/Settings/GeneralSettings.php @@ -26,6 +26,9 @@ class GeneralSettings extends Settings public bool $db_has_timezone; + /** + * @deprecated Use PUBLIC_DASHBOARD environment variable. + */ public bool $public_dashboard_enabled; public static function group(): string diff --git a/config/speedtest.php b/config/speedtest.php index 7bb679e7d..742460830 100644 --- a/config/speedtest.php +++ b/config/speedtest.php @@ -15,6 +15,8 @@ */ 'content_width' => env('CONTENT_WIDTH', '7xl'), + 'public_dashboard' => env('PUBLIC_DASHBOARD', false), + /** * Polling */