From d09bda58414352c82469d258d84c35de41b66b7a Mon Sep 17 00:00:00 2001 From: bernardhanna Date: Wed, 11 Feb 2026 16:10:07 +0000 Subject: [PATCH] dynamic GID --- .../Middleware/EnsureNovaMainDashboard.php | 18 ++++++++++++++---- app/Nova/GirlsInDigitalFaqItem.php | 4 ++-- app/Providers/AppServiceProvider.php | 12 ++++++++++++ bootstrap/app.php | 1 + 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/Http/Middleware/EnsureNovaMainDashboard.php b/app/Http/Middleware/EnsureNovaMainDashboard.php index e942aa2a9..b88ab6de1 100644 --- a/app/Http/Middleware/EnsureNovaMainDashboard.php +++ b/app/Http/Middleware/EnsureNovaMainDashboard.php @@ -20,8 +20,20 @@ class EnsureNovaMainDashboard */ public function handle(Request $request, Closure $next): Response { - if (! $this->isNovaDashboardRequest($request)) { - return $next($request); + self::ensureMainDashboardRegistered($request); + + return $next($request); + } + + /** + * Call from anywhere (e.g. web middleware) to ensure Main dashboard exists for Nova paths. + */ + public static function ensureMainDashboardRegistered(Request $request): void + { + $path = $request->path(); + $isNova = $path === 'nova' || str_starts_with($path, 'nova/') || str_starts_with($path, 'nova-api/'); + if (! $isNova) { + return; } $hasMain = collect(Nova::$dashboards)->contains(function ($dashboard) { @@ -31,8 +43,6 @@ public function handle(Request $request, Closure $next): Response if (! $hasMain) { Nova::dashboards([new Main]); } - - return $next($request); } private function isNovaDashboardRequest(Request $request): bool diff --git a/app/Nova/GirlsInDigitalFaqItem.php b/app/Nova/GirlsInDigitalFaqItem.php index ee7baa4dc..2b3350b59 100644 --- a/app/Nova/GirlsInDigitalFaqItem.php +++ b/app/Nova/GirlsInDigitalFaqItem.php @@ -42,12 +42,12 @@ public static function authorizedToCreate(Request $request): bool return true; } - public static function authorizedToUpdate(Request $request, $model): bool + public function authorizedToUpdate(Request $request): bool { return true; } - public static function authorizedToDelete(Request $request, $model): bool + public function authorizedToDelete(Request $request): bool { return true; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f3624066a..0699cefc6 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -10,6 +10,7 @@ use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\View; use Illuminate\Support\Arr; use Illuminate\Support\ServiceProvider; @@ -155,6 +156,17 @@ function ($view) { $this->bootAuth(); $this->bootEvent(); + $this->bootNovaMainDashboardRoute(); + } + + /** + * Ensure /nova/dashboards/main always has a matching route (no domain constraint). + */ + protected function bootNovaMainDashboardRoute(): void + { + Route::middleware(config('nova.middleware', [])) + ->get('/nova/dashboards/main', [\Laravel\Nova\Http\Controllers\Pages\DashboardController::class, '__invoke']) + ->defaults('name', 'main'); } /** diff --git a/bootstrap/app.php b/bootstrap/app.php index 753772ce0..88c094027 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -29,6 +29,7 @@ ]); $middleware->web([ + \App\Http\Middleware\EnsureNovaMainDashboard::class, \App\Http\Middleware\CheckBrowser::class, \App\Http\Middleware\Locale::class, \App\Http\Middleware\CheckConsent::class