From 88f33be5b6084aca6b1d1a486012d2a0fc140747 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 12 Jul 2024 12:51:55 +0200 Subject: [PATCH] refactor: only get instanceSettings once from db --- app/Exceptions/Handler.php | 2 +- app/Http/Controllers/Api/OtherController.php | 5 ++- .../Controllers/Api/ServersController.php | 2 +- app/Http/Middleware/ApiAllowed.php | 2 +- app/Jobs/PullCoolifyImageJob.php | 2 +- app/Livewire/Help.php | 2 +- app/Livewire/Notifications/Email.php | 2 +- app/Livewire/Project/Shared/Webhooks.php | 2 ++ app/Livewire/Settings/Index.php | 2 +- app/Livewire/Settings/License.php | 2 +- app/Livewire/Source/Github/Change.php | 2 +- app/Livewire/Subscription/Index.php | 2 +- app/Models/Server.php | 2 +- .../Channels/TransactionalEmailChannel.php | 3 +- .../TransactionalEmails/ResetPassword.php | 2 +- app/Providers/AppServiceProvider.php | 4 +++ app/Providers/FortifyServiceProvider.php | 5 ++- bootstrap/helpers/shared.php | 18 +++++----- config/livewire.php | 2 +- database/seeders/InstanceSettingsSeeder.php | 4 +-- resources/views/layouts/base.blade.php | 2 +- .../application/configuration.blade.php | 34 +++++++++---------- .../resource/environment-select.blade.php | 2 +- 23 files changed, 54 insertions(+), 51 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 9607cffec..d382dedfe 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -65,7 +65,7 @@ public function register(): void if ($e instanceof RuntimeException) { return; } - $this->settings = InstanceSettings::get(); + $this->settings = view()->shared('instanceSettings'); if ($this->settings->do_not_track) { return; } diff --git a/app/Http/Controllers/Api/OtherController.php b/app/Http/Controllers/Api/OtherController.php index 96dded3ce..917ccc857 100644 --- a/app/Http/Controllers/Api/OtherController.php +++ b/app/Http/Controllers/Api/OtherController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; -use App\Models\InstanceSettings; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use OpenApi\Attributes as OA; @@ -85,7 +84,7 @@ public function enable_api(Request $request) if ($teamId !== '0') { return response()->json(['message' => 'You are not allowed to enable the API.'], 403); } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $settings->update(['is_api_enabled' => true]); return response()->json(['message' => 'API enabled.'], 200); @@ -136,7 +135,7 @@ public function disable_api(Request $request) if ($teamId !== '0') { return response()->json(['message' => 'You are not allowed to disable the API.'], 403); } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $settings->update(['is_api_enabled' => false]); return response()->json(['message' => 'API disabled.'], 200); diff --git a/app/Http/Controllers/Api/ServersController.php b/app/Http/Controllers/Api/ServersController.php index 247a2519f..161bc3a34 100644 --- a/app/Http/Controllers/Api/ServersController.php +++ b/app/Http/Controllers/Api/ServersController.php @@ -301,7 +301,7 @@ public function domains_by_server(Request $request) $projects = Project::where('team_id', $teamId)->get(); $domains = collect(); $applications = $projects->pluck('applications')->flatten(); - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if ($applications->count() > 0) { foreach ($applications as $application) { $ip = $application->destination->server->ip; diff --git a/app/Http/Middleware/ApiAllowed.php b/app/Http/Middleware/ApiAllowed.php index dc0a433e2..b2a2d0c9a 100644 --- a/app/Http/Middleware/ApiAllowed.php +++ b/app/Http/Middleware/ApiAllowed.php @@ -15,7 +15,7 @@ public function handle(Request $request, Closure $next): Response if (isCloud()) { return $next($request); } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if ($settings->is_api_enabled === false) { return response()->json(['success' => true, 'message' => 'API is disabled.'], 403); } diff --git a/app/Jobs/PullCoolifyImageJob.php b/app/Jobs/PullCoolifyImageJob.php index 2bcbfc4df..793b4c4e3 100644 --- a/app/Jobs/PullCoolifyImageJob.php +++ b/app/Jobs/PullCoolifyImageJob.php @@ -36,7 +36,7 @@ public function handle(): void $latest_version = get_latest_version_of_coolify(); instant_remote_process(["docker pull -q ghcr.io/coollabsio/coolify:{$latest_version}"], $server, false); - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $current_version = config('version'); if (! $settings->is_auto_update_enabled) { return; diff --git a/app/Livewire/Help.php b/app/Livewire/Help.php index 2fbd2bc7e..f85610bec 100644 --- a/app/Livewire/Help.php +++ b/app/Livewire/Help.php @@ -48,7 +48,7 @@ public function submit() ] ); $mail->subject("[HELP]: {$this->subject}"); - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $type = set_transanctional_email_settings($settings); if (! $type) { $url = 'https://app.coolify.io/api/feedback'; diff --git a/app/Livewire/Notifications/Email.php b/app/Livewire/Notifications/Email.php index 91c108edc..aa5279d06 100644 --- a/app/Livewire/Notifications/Email.php +++ b/app/Livewire/Notifications/Email.php @@ -173,7 +173,7 @@ public function submitResend() public function copyFromInstanceSettings() { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if ($settings->smtp_enabled) { $team = currentTeam(); $team->update([ diff --git a/app/Livewire/Project/Shared/Webhooks.php b/app/Livewire/Project/Shared/Webhooks.php index 40e7cdd49..99fbecbce 100644 --- a/app/Livewire/Project/Shared/Webhooks.php +++ b/app/Livewire/Project/Shared/Webhooks.php @@ -29,6 +29,8 @@ class Webhooks extends Component public function mount() { + // ray()->clearAll(); + // ray()->showQueries(); $this->deploywebhook = generateDeployWebhook($this->resource); $this->githubManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_github'); diff --git a/app/Livewire/Settings/Index.php b/app/Livewire/Settings/Index.php index f6f918933..044f78016 100644 --- a/app/Livewire/Settings/Index.php +++ b/app/Livewire/Settings/Index.php @@ -18,7 +18,7 @@ class Index extends Component public function mount() { if (isInstanceAdmin()) { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $database = StandalonePostgresql::whereName('coolify-db')->first(); $s3s = S3Storage::whereTeamId(0)->get() ?? []; if ($database) { diff --git a/app/Livewire/Settings/License.php b/app/Livewire/Settings/License.php index 212bc95be..dce8e4477 100644 --- a/app/Livewire/Settings/License.php +++ b/app/Livewire/Settings/License.php @@ -29,7 +29,7 @@ public function mount() abort(404); } $this->instance_id = config('app.id'); - $this->settings = InstanceSettings::get(); + $this->settings = view()->shared('instanceSettings'); } public function render() diff --git a/app/Livewire/Source/Github/Change.php b/app/Livewire/Source/Github/Change.php index ee28f8847..1395c16fc 100644 --- a/app/Livewire/Source/Github/Change.php +++ b/app/Livewire/Source/Github/Change.php @@ -100,7 +100,7 @@ public function mount() return redirect()->route('source.all'); } $this->applications = $this->github_app->applications; - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $this->github_app->makeVisible('client_secret')->makeVisible('webhook_secret'); $this->name = str($this->github_app->name)->kebab(); diff --git a/app/Livewire/Subscription/Index.php b/app/Livewire/Subscription/Index.php index c072352fe..365e6a391 100644 --- a/app/Livewire/Subscription/Index.php +++ b/app/Livewire/Subscription/Index.php @@ -23,7 +23,7 @@ public function mount() if (data_get(currentTeam(), 'subscription') && isSubscriptionActive()) { return redirect()->route('subscription.show'); } - $this->settings = InstanceSettings::get(); + $this->settings = view()->shared('instanceSettings'); $this->alreadySubscribed = currentTeam()->subscription()->exists(); } diff --git a/app/Models/Server.php b/app/Models/Server.php index 2efc9907b..7ab04f05e 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -318,7 +318,7 @@ public function setupDefault404Redirect() public function setupDynamicProxyConfiguration() { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $dynamic_config_path = $this->proxyPath().'/dynamic'; if ($this->proxyType() === 'TRAEFIK_V2') { $file = "$dynamic_config_path/coolify.yaml"; diff --git a/app/Notifications/Channels/TransactionalEmailChannel.php b/app/Notifications/Channels/TransactionalEmailChannel.php index 3d7b7c8d0..49bebd692 100644 --- a/app/Notifications/Channels/TransactionalEmailChannel.php +++ b/app/Notifications/Channels/TransactionalEmailChannel.php @@ -2,7 +2,6 @@ namespace App\Notifications\Channels; -use App\Models\InstanceSettings; use App\Models\User; use Exception; use Illuminate\Mail\Message; @@ -14,7 +13,7 @@ class TransactionalEmailChannel { public function send(User $notifiable, Notification $notification): void { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (! data_get($settings, 'smtp_enabled') && ! data_get($settings, 'resend_enabled')) { Log::info('SMTP/Resend not enabled'); diff --git a/app/Notifications/TransactionalEmails/ResetPassword.php b/app/Notifications/TransactionalEmails/ResetPassword.php index 45243c4d5..fcb1ddb75 100644 --- a/app/Notifications/TransactionalEmails/ResetPassword.php +++ b/app/Notifications/TransactionalEmails/ResetPassword.php @@ -18,7 +18,7 @@ class ResetPassword extends Notification public function __construct($token) { - $this->settings = InstanceSettings::get(); + $this->settings = view()->shared('instanceSettings'); $this->token = $token; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 6822dec13..22fa55058 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,8 +2,10 @@ namespace App\Providers; +use App\Models\InstanceSettings; use App\Models\PersonalAccessToken; use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use Laravel\Sanctum\Sanctum; @@ -27,5 +29,7 @@ public function boot(): void ])->baseUrl($api_url); } }); + + View::share('instanceSettings', InstanceSettings::get()); } } diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index cd6ec7705..bb5dc81f4 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -6,7 +6,6 @@ use App\Actions\Fortify\ResetUserPassword; use App\Actions\Fortify\UpdateUserPassword; use App\Actions\Fortify\UpdateUserProfileInformation; -use App\Models\InstanceSettings; use App\Models\OauthSetting; use App\Models\User; use Illuminate\Cache\RateLimiting\Limit; @@ -45,7 +44,7 @@ public function boot(): void { Fortify::createUsersUsing(CreateNewUser::class); Fortify::registerView(function () { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (! $settings->is_registration_enabled) { return redirect()->route('login'); } @@ -57,7 +56,7 @@ public function boot(): void }); Fortify::loginView(function () { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $enabled_oauth_providers = OauthSetting::where('enabled', true)->get(); $users = User::count(); if ($users == 0) { diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php index e09b00793..bc1299088 100644 --- a/bootstrap/helpers/shared.php +++ b/bootstrap/helpers/shared.php @@ -244,13 +244,13 @@ function generate_application_name(string $git_repository, string $git_branch, ? function is_transactional_emails_active(): bool { - return isEmailEnabled(InstanceSettings::get()); + return isEmailEnabled(view()->shared('instanceSettings')); } function set_transanctional_email_settings(?InstanceSettings $settings = null): ?string { if (! $settings) { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); } config()->set('mail.from.address', data_get($settings, 'smtp_from_address')); config()->set('mail.from.name', data_get($settings, 'smtp_from_name')); @@ -284,7 +284,7 @@ function base_ip(): string if (isDev()) { return 'localhost'; } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if ($settings->public_ipv4) { return "$settings->public_ipv4"; } @@ -312,7 +312,7 @@ function getFqdnWithoutPort(string $fqdn) */ function base_url(bool $withPort = true): string { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if ($settings->fqdn) { return $settings->fqdn; } @@ -379,7 +379,7 @@ function send_internal_notification(string $message): void } function send_user_an_email(MailMessage $mail, string $email, ?string $cc = null): void { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $type = set_transanctional_email_settings($settings); if (! $type) { throw new Exception('No email settings found.'); @@ -2258,7 +2258,7 @@ function validate_dns_entry(string $fqdn, Server $server) if (str($host)->contains('sslip.io')) { return true; } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); $is_dns_validation_enabled = data_get($settings, 'is_dns_validation_enabled'); if (! $is_dns_validation_enabled) { return true; @@ -2378,7 +2378,7 @@ function checkIfDomainIsAlreadyUsed(Collection|array $domains, ?string $teamId = if ($domainFound) { return true; } - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (data_get($settings, 'fqdn')) { $domain = data_get($settings, 'fqdn'); if (str($domain)->endsWith('/')) { @@ -2450,7 +2450,7 @@ function check_domain_usage(ServiceApplication|Application|null $resource = null } } if ($resource) { - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (data_get($settings, 'fqdn')) { $domain = data_get($settings, 'fqdn'); if (str($domain)->endsWith('/')) { @@ -2525,7 +2525,7 @@ function get_public_ips() { try { echo "Refreshing public ips!\n"; - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); [$first, $second] = Process::concurrently(function (Pool $pool) { $pool->path(__DIR__)->command('curl -4s https://ifconfig.io'); $pool->path(__DIR__)->command('curl -6s https://ifconfig.io'); diff --git a/config/livewire.php b/config/livewire.php index 02725e944..bd3733076 100644 --- a/config/livewire.php +++ b/config/livewire.php @@ -90,7 +90,7 @@ | */ - 'legacy_model_binding' => true, + 'legacy_model_binding' => false, /* |--------------------------------------------------------------------------- diff --git a/database/seeders/InstanceSettingsSeeder.php b/database/seeders/InstanceSettingsSeeder.php index 31c8cfb5f..f4b4a7fa2 100644 --- a/database/seeders/InstanceSettingsSeeder.php +++ b/database/seeders/InstanceSettingsSeeder.php @@ -27,14 +27,14 @@ public function run(): void $ipv4 = Process::run('curl -4s https://ifconfig.io')->output(); $ipv4 = trim($ipv4); $ipv4 = filter_var($ipv4, FILTER_VALIDATE_IP); - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (is_null($settings->public_ipv4) && $ipv4) { $settings->update(['public_ipv4' => $ipv4]); } $ipv6 = Process::run('curl -6s https://ifconfig.io')->output(); $ipv6 = trim($ipv6); $ipv6 = filter_var($ipv6, FILTER_VALIDATE_IP); - $settings = InstanceSettings::get(); + $settings = view()->shared('instanceSettings'); if (is_null($settings->public_ipv6) && $ipv6) { $settings->update(['public_ipv6' => $ipv6]); } diff --git a/resources/views/layouts/base.blade.php b/resources/views/layouts/base.blade.php index 744272242..9f3179090 100644 --- a/resources/views/layouts/base.blade.php +++ b/resources/views/layouts/base.blade.php @@ -8,7 +8,7 @@ @use('App\Models\InstanceSettings') @php - $instanceSettings = InstanceSettings::first(); + $instanceSettings = view()->shared('instanceSettings'); $name = null; if ($instanceSettings) { diff --git a/resources/views/livewire/project/application/configuration.blade.php b/resources/views/livewire/project/application/configuration.blade.php index 639776730..bb3ba9be9 100644 --- a/resources/views/livewire/project/application/configuration.blade.php +++ b/resources/views/livewire/project/application/configuration.blade.php @@ -86,57 +86,57 @@
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
@if ($application->git_based())
- + {{-- --}}
@endif
- + {{-- --}}
- + {{-- --}}
- +
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- + {{-- --}}
- +
- + {{-- --}}
diff --git a/resources/views/livewire/project/resource/environment-select.blade.php b/resources/views/livewire/project/resource/environment-select.blade.php index ab160dcda..c03466d28 100644 --- a/resources/views/livewire/project/resource/environment-select.blade.php +++ b/resources/views/livewire/project/resource/environment-select.blade.php @@ -1,5 +1,5 @@ - + @foreach ($environments as $environment)