From e0f7021693c00daca2ffe2637ae04099d2d1212c Mon Sep 17 00:00:00 2001 From: Remco Date: Mon, 19 Jan 2026 22:23:30 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=86=99=20More=20fixes=20=F0=9F=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Middleware/InstallationMiddleware.php | 44 +++++++++++-------- .../Middleware/LocalizationMiddleware.php | 26 ++++++++--- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php b/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php index 3a9b581af1..f0ec653a1f 100644 --- a/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php +++ b/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php @@ -15,10 +15,12 @@ use Illuminate\Support\Str; class InstallationMiddleware { - public function handle(Request $request, Closure $next) + public function handle(Request $request, Closure $next): \Symfony\Component\HttpFoundation\Response { if (Cache::get('app_installed')) { - return $next($request); + $response = $next($request); + assert($response instanceof \Symfony\Component\HttpFoundation\Response); + return $response; } $this->ensureInstallationTableExists(); @@ -36,15 +38,19 @@ class InstallationMiddleware return $this->redirectIfNotCompleted($installation); } - return $next($request); + $response = $next($request); + assert($response instanceof \Symfony\Component\HttpFoundation\Response); + return $response; } - private function ensureInstallationTableExists() + private function ensureInstallationTableExists(): void { - if (! Schema::hasTable('website_installation')) { + $hasInstallTable = Schema::hasTable('website_installation'); + if (! $hasInstallTable) { Artisan::call('migrate', ['--path' => 'database/migrations/' . findMigration('website_installation')]); - if (! Schema::hasTable('website_installation')) { + $hasInstallTable = Schema::hasTable('website_installation'); + if (! $hasInstallTable) { throw new MigrationFailedException('website_installation'); } } @@ -54,7 +60,7 @@ class InstallationMiddleware } } - private function getInstallation() + private function getInstallation(): WebsiteInstallation { try { $installation = WebsiteInstallation::query()->first(); @@ -64,7 +70,7 @@ class InstallationMiddleware 'step' => 0, 'completed' => false, 'installation_key' => Str::uuid(), - 'user_ip' => request()?->ip(), + 'user_ip' => request()->ip(), ]); } @@ -75,7 +81,7 @@ class InstallationMiddleware } } - private function handleInstallationSteps(Request $request, WebsiteInstallation $installation) + private function handleInstallationSteps(Request $request, WebsiteInstallation $installation): bool { if ($installation->completed) { return true; @@ -100,54 +106,54 @@ class InstallationMiddleware return ! $this->isMismatchedStep($request, $installation); } - private function isWelcomeStep(Request $request, WebsiteInstallation $installation) + private function isWelcomeStep(Request $request, WebsiteInstallation $installation): bool { return $installation->step === 0 && $request->getRequestUri() === '/installation'; } - private function isRedirectToWelcome(Request $request, WebsiteInstallation $installation) + private function isRedirectToWelcome(Request $request, WebsiteInstallation $installation): bool { return $installation->step === 0 && $request->getRequestUri() !== '/installation' && $request->method() !== 'POST'; } - private function isInvalidAccess(Request $request, WebsiteInstallation $installation) + private function isInvalidAccess(Request $request, WebsiteInstallation $installation): bool { return $installation->step > 0 && $request->ip() !== $installation->user_ip; } - private function isInvalidStep(Request $request) + private function isInvalidStep(Request $request): bool { return ! $this->isValidStep($request) && $this->isNonPostRequest($request); } - private function isMismatchedStep(Request $request, WebsiteInstallation $installation) + private function isMismatchedStep(Request $request, WebsiteInstallation $installation): bool { return $this->getCurrentStep($request) !== $installation->step && $this->isNonPostRequest($request); } - private function isValidStep(Request $request) + private function isValidStep(Request $request): bool { $step = $this->getCurrentStep($request); return filter_var($step, FILTER_VALIDATE_INT) !== false; } - private function isNonPostRequest(Request $request) + private function isNonPostRequest(Request $request): bool { return $request->method() !== 'POST' || $request->is('restart-installation'); } - private function getCurrentStep(Request $request) + private function getCurrentStep(Request $request): int { return (int) Str::after($request->path(), 'step/'); } - private function redirectToStep(int $step) + private function redirectToStep(int $step): \Symfony\Component\HttpFoundation\Response { return to_route('installation.show-step', $step); } - protected function redirectIfNotCompleted(WebsiteInstallation $installation) + protected function redirectIfNotCompleted(WebsiteInstallation $installation): \Symfony\Component\HttpFoundation\Response { if ($installation->step === 0) { diff --git a/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php b/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php index 22631606b7..ee9289dfab 100644 --- a/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php +++ b/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php @@ -16,7 +16,13 @@ class LocalizationMiddleware { // Controleer of de instellingen bestaan en of de taal al in de sessie staat if (Schema::hasTable('website_settings') && Session::has('locale')) { - App::setLocale((string) Session::get('locale')); + $locale = Session::get('locale'); + if (! is_string($locale)) { + $response = $next($request); + assert($response instanceof Response); + return $response; + } + App::setLocale($locale); $response = $next($request); assert($response instanceof Response); @@ -26,16 +32,20 @@ class LocalizationMiddleware $countryCode = config('habbo.site.default_language'); // GEWIJZIGD: isset() werkt niet op Request::server() in PHP 8. Gebruik null !== in plaats daarvan. - if (null !== \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY')) { - $countryCode = strtolower((string) \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY')); - } - elseif (null !== \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE')) { - $countryCode = strtolower(substr((string) \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'), 0, 2)); + $cfCountry = \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY'); + if (is_string($cfCountry)) { + $countryCode = strtolower($cfCountry); + } elseif (is_string(\Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'))) { + $acceptLanguage = \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'); + $countryCode = strtolower(substr($acceptLanguage, 0, 2)); } // Als de taal niet in de database staat, gebruik de standaardtaal if (Schema::hasTable('website_languages') && WebsiteLanguage::where('country_code', '=', $countryCode)->doesntExist()) { $defaultCountry = config('habbo.site.default_language'); + if (! is_string($defaultCountry)) { + $defaultCountry = 'en'; + } App::setLocale($defaultCountry); Session::put('locale', $defaultCountry); @@ -46,7 +56,9 @@ class LocalizationMiddleware } // Zet de gedetecteerde taal - App::setLocale($countryCode); + if (is_string($countryCode)) { + App::setLocale($countryCode); + } Session::put('locale', $countryCode); $response = $next($request);