fix: 🐛 Try catch for possible non available settings

This commit is contained in:
IceToast 2024-04-12 21:01:00 +02:00
parent 48cce11ebc
commit 330ea45c5b
5 changed files with 31 additions and 25 deletions

View file

@ -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;
}

View file

@ -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;

View file

@ -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";
try {
$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");
}
$settings = $this->app->make(MailSettings::class);
$settings->setConfig();
} catch (Exception $e) {
Log::error("Couldnt load Settings. Probably the installation is not completet. " . $e);
}
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();
}
}

View file

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

View file

@ -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');