You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user