浏览代码

fix: 🐛 Try catch for possible non available settings

IceToast 1 年之前
父节点
当前提交
330ea45c5b

+ 8 - 3
app/Classes/LegacySettingsMigration.php

@@ -9,15 +9,20 @@ use Spatie\LaravelSettings\Migrations\SettingsMigration;
 
 abstract class LegacySettingsMigration extends SettingsMigration
 {
-    public function getNewValue(string $name)
+    public function getNewValue(string $name, string $group)
     {
-        $new_value = DB::table('settings')->where([['group', '=', 'general'], ['name', '=', $name]])->get(['payload'])->first();
+        $new_value = DB::table('settings')->where([['group', '=', $group], ['name', '=', $name]])->get(['payload'])->first();
+
+        if (is_null($new_value) || is_null($new_value->payload)) {
+            return null;
+        }
 
         // Some keys returns '""' as a value.
         if ($new_value->payload === '""') {
             return null;
         }
 
+
         // remove the quotes from the string
         if (substr($new_value->payload, 0, 1) === '"' && substr($new_value->payload, -1) === '"') {
             return substr($new_value->payload, 1, -1);
@@ -35,7 +40,7 @@ abstract class LegacySettingsMigration extends SettingsMigration
     {
         $old_value = DB::table('settings_old')->where('key', '=', $key)->get(['value', 'type'])->first();
 
-        if (is_null($old_value->value)) {
+        if (is_null($old_value) || is_null($old_value->value)) {
             return $default;
         }
 

+ 0 - 3
app/Http/Controllers/ServerController.php

@@ -8,8 +8,6 @@ use App\Models\Pterodactyl\Nest;
 use App\Models\Pterodactyl\Node;
 use App\Models\Product;
 use App\Models\Server;
-use App\Models\User;
-use App\Models\Settings;
 use App\Notifications\ServerCreationError;
 use Carbon\Carbon;
 use App\Settings\UserSettings;
@@ -18,7 +16,6 @@ use App\Settings\PterodactylSettings;
 use App\Classes\PterodactylClient;
 use App\Settings\GeneralSettings;
 use Exception;
-use GuzzleHttp\Promise\Create;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Client\Response;
 use Illuminate\Http\RedirectResponse;

+ 15 - 13
app/Providers/AppServiceProvider.php

@@ -2,7 +2,6 @@
 
 namespace App\Providers;
 
-use App\Extensions\PaymentGateways\PayPal\PayPalSettings;
 use App\Models\UsefulLink;
 use App\Settings\GeneralSettings;
 use App\Settings\MailSettings;
@@ -89,20 +88,23 @@ class AppServiceProvider extends ServiceProvider
             Log::error("Couldnt find useful_links. Probably the installation is not completet. " . $e);
         }
 
-        $generalSettings = $this->app->make(GeneralSettings::class);
-        if (!file_exists(base_path('themes') . "/" . $generalSettings->theme)) {
-            $generalSettings->theme = "default";
-        }
-
-        if ($generalSettings->theme && $generalSettings->theme !== config('theme.active')) {
-            Theme::set($generalSettings->theme, "default");
-        } else {
-            Theme::set("default", "default");
-        }
 
+        try {
+            $generalSettings = $this->app->make(GeneralSettings::class);
+            if (!file_exists(base_path('themes') . "/" . $generalSettings->theme)) {
+                $generalSettings->theme = "default";
+            }
 
-        $settings = $this->app->make(MailSettings::class);
-        $settings->setConfig();
+            if ($generalSettings->theme && $generalSettings->theme !== config('theme.active')) {
+                Theme::set($generalSettings->theme, "default");
+            } else {
+                Theme::set("default", "default");
+            }
 
+            $settings = $this->app->make(MailSettings::class);
+            $settings->setConfig();
+        } catch (Exception $e) {
+            Log::error("Couldnt load Settings. Probably the installation is not completet. " . $e);
+        }
     }
 }

+ 1 - 1
config/settings.php

@@ -32,7 +32,7 @@ return [
         UserSettings::class,
         WebsiteSettings::class,
         TicketSettings::class,
-				CouponSettings::class,
+        CouponSettings::class,
     ],
 
     /*

+ 5 - 3
routes/web.php

@@ -77,11 +77,13 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
     Route::patch('/servers/cancel/{server}', [ServerController::class, 'cancel'])->name('servers.cancel');
     Route::resource('servers', ServerController::class);
 
-    if (config('app.key')) {
+    try {
         $serverSettings = app(App\Settings\ServerSettings::class);
-        if ($serverSettings->enable_upgrade) {
-            Route::post('servers/{server}/upgrade', [ServerController::class, 'upgrade'])->name('servers.upgrade');
+        if ($serverSettings->creation_enabled) {
+            Route::resource('servers', ServerController::class);
         }
+    } catch (Exception $e) {
+        // Do nothing if the settings are not available.
     }
 
     Route::post('profile/selfdestruct', [ProfileController::class, 'selfDestroyUser'])->name('profile.selfDestroyUser');