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
*/