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
|
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')) {
|
if (Cache::get('app_installed')) {
|
||||||
return $next($request);
|
$response = $next($request);
|
||||||
|
assert($response instanceof \Symfony\Component\HttpFoundation\Response);
|
||||||
|
return $response;
|
||||||
}
|
}
|
||||||
$this->ensureInstallationTableExists();
|
$this->ensureInstallationTableExists();
|
||||||
|
|
||||||
@@ -36,15 +38,19 @@ class InstallationMiddleware
|
|||||||
return $this->redirectIfNotCompleted($installation);
|
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')]);
|
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');
|
throw new MigrationFailedException('website_installation');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -54,7 +60,7 @@ class InstallationMiddleware
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getInstallation()
|
private function getInstallation(): WebsiteInstallation
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$installation = WebsiteInstallation::query()->first();
|
$installation = WebsiteInstallation::query()->first();
|
||||||
@@ -64,7 +70,7 @@ class InstallationMiddleware
|
|||||||
'step' => 0,
|
'step' => 0,
|
||||||
'completed' => false,
|
'completed' => false,
|
||||||
'installation_key' => Str::uuid(),
|
'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) {
|
if ($installation->completed) {
|
||||||
return true;
|
return true;
|
||||||
@@ -100,54 +106,54 @@ class InstallationMiddleware
|
|||||||
return ! $this->isMismatchedStep($request, $installation);
|
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';
|
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';
|
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;
|
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);
|
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);
|
return $this->getCurrentStep($request) !== $installation->step && $this->isNonPostRequest($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function isValidStep(Request $request)
|
private function isValidStep(Request $request): bool
|
||||||
{
|
{
|
||||||
$step = $this->getCurrentStep($request);
|
$step = $this->getCurrentStep($request);
|
||||||
|
|
||||||
return filter_var($step, FILTER_VALIDATE_INT) !== false;
|
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');
|
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/');
|
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);
|
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) {
|
if ($installation->step === 0) {
|
||||||
|
|||||||
@@ -16,7 +16,13 @@ class LocalizationMiddleware
|
|||||||
{
|
{
|
||||||
// Controleer of de instellingen bestaan en of de taal al in de sessie staat
|
// Controleer of de instellingen bestaan en of de taal al in de sessie staat
|
||||||
if (Schema::hasTable('website_settings') && Session::has('locale')) {
|
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);
|
$response = $next($request);
|
||||||
assert($response instanceof Response);
|
assert($response instanceof Response);
|
||||||
@@ -26,16 +32,20 @@ class LocalizationMiddleware
|
|||||||
$countryCode = config('habbo.site.default_language');
|
$countryCode = config('habbo.site.default_language');
|
||||||
|
|
||||||
// GEWIJZIGD: isset() werkt niet op Request::server() in PHP 8. Gebruik null !== in plaats daarvan.
|
// 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')) {
|
$cfCountry = \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY');
|
||||||
$countryCode = strtolower((string) \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY'));
|
if (is_string($cfCountry)) {
|
||||||
}
|
$countryCode = strtolower($cfCountry);
|
||||||
elseif (null !== \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE')) {
|
} elseif (is_string(\Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'))) {
|
||||||
$countryCode = strtolower(substr((string) \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'), 0, 2));
|
$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
|
// Als de taal niet in de database staat, gebruik de standaardtaal
|
||||||
if (Schema::hasTable('website_languages') && WebsiteLanguage::where('country_code', '=', $countryCode)->doesntExist()) {
|
if (Schema::hasTable('website_languages') && WebsiteLanguage::where('country_code', '=', $countryCode)->doesntExist()) {
|
||||||
$defaultCountry = config('habbo.site.default_language');
|
$defaultCountry = config('habbo.site.default_language');
|
||||||
|
if (! is_string($defaultCountry)) {
|
||||||
|
$defaultCountry = 'en';
|
||||||
|
}
|
||||||
|
|
||||||
App::setLocale($defaultCountry);
|
App::setLocale($defaultCountry);
|
||||||
Session::put('locale', $defaultCountry);
|
Session::put('locale', $defaultCountry);
|
||||||
@@ -46,7 +56,9 @@ class LocalizationMiddleware
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Zet de gedetecteerde taal
|
// Zet de gedetecteerde taal
|
||||||
App::setLocale($countryCode);
|
if (is_string($countryCode)) {
|
||||||
|
App::setLocale($countryCode);
|
||||||
|
}
|
||||||
Session::put('locale', $countryCode);
|
Session::put('locale', $countryCode);
|
||||||
|
|
||||||
$response = $next($request);
|
$response = $next($request);
|
||||||
|
|||||||
Reference in New Issue
Block a user