diff --git a/app/Events/ServiceStatusChanged.php b/app/Events/ServiceStatusChanged.php
index dc965d0a2..a86a8b02d 100644
--- a/app/Events/ServiceStatusChanged.php
+++ b/app/Events/ServiceStatusChanged.php
@@ -27,7 +27,7 @@ public function __construct($userId = null)
public function broadcastOn(): ?array
{
- if ($this->userId) {
+ if (! is_null($this->userId)) {
return [
new PrivateChannel("user.{$this->userId}"),
];
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..870824e9a 100644
--- a/app/Http/Controllers/Api/ServersController.php
+++ b/app/Http/Controllers/Api/ServersController.php
@@ -4,7 +4,6 @@
use App\Http\Controllers\Controller;
use App\Models\Application;
-use App\Models\InstanceSettings;
use App\Models\Project;
use App\Models\Server as ModelsServer;
use Illuminate\Http\Request;
@@ -301,7 +300,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..36ac6cb9c 100644
--- a/app/Http/Middleware/ApiAllowed.php
+++ b/app/Http/Middleware/ApiAllowed.php
@@ -2,7 +2,6 @@
namespace App\Http\Middleware;
-use App\Models\InstanceSettings;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -15,7 +14,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..c8bb5f7ef 100644
--- a/app/Jobs/PullCoolifyImageJob.php
+++ b/app/Jobs/PullCoolifyImageJob.php
@@ -2,7 +2,6 @@
namespace App\Jobs;
-use App\Models\InstanceSettings;
use App\Models\Server;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeEncrypted;
@@ -36,7 +35,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..465332cb0 100644
--- a/app/Livewire/Help.php
+++ b/app/Livewire/Help.php
@@ -2,7 +2,6 @@
namespace App\Livewire;
-use App\Models\InstanceSettings;
use DanHarrin\LivewireRateLimiting\WithRateLimiting;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Support\Facades\Http;
@@ -48,7 +47,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..c694acf5d 100644
--- a/app/Livewire/Notifications/Email.php
+++ b/app/Livewire/Notifications/Email.php
@@ -2,7 +2,6 @@
namespace App\Livewire\Notifications;
-use App\Models\InstanceSettings;
use App\Models\Team;
use App\Notifications\Test;
use Livewire\Component;
@@ -173,7 +172,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/Tags.php b/app/Livewire/Project/Shared/Tags.php
index 85d5c21dc..dca6180ff 100644
--- a/app/Livewire/Project/Shared/Tags.php
+++ b/app/Livewire/Project/Shared/Tags.php
@@ -3,32 +3,63 @@
namespace App\Livewire\Project\Shared;
use App\Models\Tag;
+use Livewire\Attributes\Validate;
use Livewire\Component;
+// Refactored ✅
class Tags extends Component
{
public $resource = null;
- public ?string $new_tag = null;
+ #[Validate('required|string|min:2')]
+ public string $newTags;
public $tags = [];
- protected $listeners = [
- 'refresh' => '$refresh',
- ];
-
- protected $rules = [
- 'resource.tags.*.name' => 'required|string|min:2',
- 'new_tag' => 'required|string|min:2',
- ];
-
- protected $validationAttributes = [
- 'new_tag' => 'tag',
- ];
+ public $filteredTags = [];
public function mount()
+ {
+ $this->loadTags();
+ }
+
+ public function loadTags()
{
$this->tags = Tag::ownedByCurrentTeam()->get();
+ $this->filteredTags = $this->tags->filter(function ($tag) {
+ return ! $this->resource->tags->contains($tag);
+ });
+ }
+
+ public function submit()
+ {
+ try {
+ $this->validate();
+ $tags = str($this->newTags)->trim()->explode(' ');
+ foreach ($tags as $tag) {
+ if (strlen($tag) < 2) {
+ $this->dispatch('error', 'Invalid tag.', "Tag $tag is invalid. Min length is 2.");
+
+ continue;
+ }
+ if ($this->resource->tags()->where('name', $tag)->exists()) {
+ $this->dispatch('error', 'Duplicate tags.', "Tag $tag already added.");
+
+ continue;
+ }
+ $found = Tag::ownedByCurrentTeam()->where(['name' => $tag])->exists();
+ if (! $found) {
+ $found = Tag::create([
+ 'name' => $tag,
+ 'team_id' => currentTeam()->id,
+ ]);
+ }
+ $this->resource->tags()->attach($found->id);
+ }
+ $this->refresh();
+ } catch (\Exception $e) {
+ return handleError($e, $this);
+ }
}
public function addTag(string $id, string $name)
@@ -39,8 +70,9 @@ public function addTag(string $id, string $name)
return;
}
- $this->resource->tags()->syncWithoutDetaching($id);
+ $this->resource->tags()->attach($id);
$this->refresh();
+ $this->dispatch('success', 'Tag added.');
} catch (\Exception $e) {
return handleError($e, $this);
}
@@ -50,12 +82,12 @@ public function deleteTag(string $id)
{
try {
$this->resource->tags()->detach($id);
-
- $found_more_tags = Tag::where(['id' => $id, 'team_id' => currentTeam()->id])->first();
- if ($found_more_tags->applications()->count() == 0 && $found_more_tags->services()->count() == 0) {
+ $found_more_tags = Tag::ownedByCurrentTeam()->find($id);
+ if ($found_more_tags && $found_more_tags->applications()->count() == 0 && $found_more_tags->services()->count() == 0) {
$found_more_tags->delete();
}
$this->refresh();
+ $this->dispatch('success', 'Tag deleted.');
} catch (\Exception $e) {
return handleError($e, $this);
}
@@ -63,41 +95,8 @@ public function deleteTag(string $id)
public function refresh()
{
- $this->resource->load(['tags']);
- $this->tags = Tag::ownedByCurrentTeam()->get();
- $this->new_tag = null;
- }
-
- public function submit()
- {
- try {
- $this->validate([
- 'new_tag' => 'required|string|min:2',
- ]);
- $tags = str($this->new_tag)->trim()->explode(' ');
- foreach ($tags as $tag) {
- if ($this->resource->tags()->where('name', $tag)->exists()) {
- $this->dispatch('error', 'Duplicate tags.', "Tag $tag already added.");
-
- continue;
- }
- $found = Tag::where(['name' => $tag, 'team_id' => currentTeam()->id])->first();
- if (! $found) {
- $found = Tag::create([
- 'name' => $tag,
- 'team_id' => currentTeam()->id,
- ]);
- }
- $this->resource->tags()->syncWithoutDetaching($found->id);
- }
- $this->refresh();
- } catch (\Exception $e) {
- return handleError($e, $this);
- }
- }
-
- public function render()
- {
- return view('livewire.project.shared.tags');
+ $this->resource->refresh(); // Remove this when legacy_model_binding is false
+ $this->loadTags();
+ $this->reset('newTags');
}
}
diff --git a/app/Livewire/Project/Shared/Webhooks.php b/app/Livewire/Project/Shared/Webhooks.php
index e96bd888e..aab1fdc47 100644
--- a/app/Livewire/Project/Shared/Webhooks.php
+++ b/app/Livewire/Project/Shared/Webhooks.php
@@ -4,49 +4,61 @@
use Livewire\Component;
+// Refactored ✅
class Webhooks extends Component
{
public $resource;
- public ?string $deploywebhook = null;
+ public ?string $deploywebhook;
- public ?string $githubManualWebhook = null;
+ public ?string $githubManualWebhook;
- public ?string $gitlabManualWebhook = null;
+ public ?string $gitlabManualWebhook;
- public ?string $bitbucketManualWebhook = null;
+ public ?string $bitbucketManualWebhook;
- public ?string $giteaManualWebhook = null;
+ public ?string $giteaManualWebhook;
- protected $rules = [
- 'resource.manual_webhook_secret_github' => 'nullable|string',
- 'resource.manual_webhook_secret_gitlab' => 'nullable|string',
- 'resource.manual_webhook_secret_bitbucket' => 'nullable|string',
- 'resource.manual_webhook_secret_gitea' => 'nullable|string',
- ];
+ public ?string $githubManualWebhookSecret = null;
- public function saveSecret()
+ public ?string $gitlabManualWebhookSecret = null;
+
+ public ?string $bitbucketManualWebhookSecret = null;
+
+ public ?string $giteaManualWebhookSecret = null;
+
+ public function mount()
+ {
+ // ray()->clearAll();
+ // ray()->showQueries();
+ $this->deploywebhook = generateDeployWebhook($this->resource);
+
+ $this->githubManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_github');
+ $this->githubManualWebhook = generateGitManualWebhook($this->resource, 'github');
+
+ $this->gitlabManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_gitlab');
+ $this->gitlabManualWebhook = generateGitManualWebhook($this->resource, 'gitlab');
+
+ $this->bitbucketManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_bitbucket');
+ $this->bitbucketManualWebhook = generateGitManualWebhook($this->resource, 'bitbucket');
+
+ $this->giteaManualWebhookSecret = data_get($this->resource, 'manual_webhook_secret_gitea');
+ $this->giteaManualWebhook = generateGitManualWebhook($this->resource, 'gitea');
+ }
+
+ public function submit()
{
try {
- $this->validate();
- $this->resource->save();
+ $this->authorize('update', $this->resource);
+ $this->resource->update([
+ 'manual_webhook_secret_github' => $this->githubManualWebhookSecret,
+ 'manual_webhook_secret_gitlab' => $this->gitlabManualWebhookSecret,
+ 'manual_webhook_secret_bitbucket' => $this->bitbucketManualWebhookSecret,
+ 'manual_webhook_secret_gitea' => $this->giteaManualWebhookSecret,
+ ]);
$this->dispatch('success', 'Secret Saved.');
} catch (\Exception $e) {
return handleError($e, $this);
}
}
-
- public function mount()
- {
- $this->deploywebhook = generateDeployWebhook($this->resource);
- $this->githubManualWebhook = generateGitManualWebhook($this->resource, 'github');
- $this->gitlabManualWebhook = generateGitManualWebhook($this->resource, 'gitlab');
- $this->bitbucketManualWebhook = generateGitManualWebhook($this->resource, 'bitbucket');
- $this->giteaManualWebhook = generateGitManualWebhook($this->resource, 'gitea');
- }
-
- public function render()
- {
- return view('livewire.project.shared.webhooks');
- }
}
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..09455e6a1 100644
--- a/app/Livewire/Source/Github/Change.php
+++ b/app/Livewire/Source/Github/Change.php
@@ -4,7 +4,6 @@
use App\Jobs\GithubAppPermissionJob;
use App\Models\GithubApp;
-use App\Models\InstanceSettings;
use Illuminate\Support\Facades\Http;
use Livewire\Component;
@@ -100,7 +99,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..7fb9d56e7 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;
@@ -14,6 +16,7 @@ public function register(): void {}
public function boot(): void
{
Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
+
Http::macro('github', function (string $api_url, ?string $github_access_token = null) {
if ($github_access_token) {
return Http::withHeaders([
@@ -27,5 +30,9 @@ public function boot(): void
])->baseUrl($api_url);
}
});
+ if (! env('CI')) {
+ 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 b500154ba..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.');
@@ -774,6 +774,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
$allServices = get_service_templates();
$topLevelVolumes = collect(data_get($yaml, 'volumes', []));
$topLevelNetworks = collect(data_get($yaml, 'networks', []));
+ $topLevelConfigs = collect(data_get($yaml, 'configs', []));
+ $topLevelSecrets = collect(data_get($yaml, 'secrets', []));
$services = data_get($yaml, 'services');
$generatedServiceFQDNS = collect([]);
@@ -1402,6 +1404,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
'services' => $services->toArray(),
'volumes' => $topLevelVolumes->toArray(),
'networks' => $topLevelNetworks->toArray(),
+ 'configs' => $topLevelConfigs->toArray(),
+ 'secrets' => $topLevelSecrets->toArray(),
];
$yaml = data_forget($yaml, 'services.*.volumes.*.content');
$resource->docker_compose_raw = Yaml::dump($yaml, 10, 2);
@@ -1441,6 +1445,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
}
$topLevelNetworks = collect(data_get($yaml, 'networks', []));
+ $topLevelConfigs = collect(data_get($yaml, 'configs', []));
+ $topLevelSecrets = collect(data_get($yaml, 'secrets', []));
$services = data_get($yaml, 'services');
$generatedServiceFQDNS = collect([]);
@@ -2086,6 +2092,8 @@ function parseDockerComposeFile(Service|Application $resource, bool $isNew = fal
'services' => $services->toArray(),
'volumes' => $topLevelVolumes->toArray(),
'networks' => $topLevelNetworks->toArray(),
+ 'configs' => $topLevelConfigs->toArray(),
+ 'secrets' => $topLevelSecrets->toArray(),
];
if ($isSameDockerComposeFile) {
$resource->docker_compose_raw = Yaml::dump($yaml, 10, 2);
@@ -2250,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;
@@ -2370,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('/')) {
@@ -2442,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('/')) {
@@ -2517,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/sentry.php b/config/sentry.php
index 46bfddd6f..f08d73156 100644
--- a/config/sentry.php
+++ b/config/sentry.php
@@ -7,7 +7,7 @@
// The release version of your application
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
- 'release' => '4.0.0-beta.310',
+ 'release' => '4.0.0-beta.311',
// When left empty or `null` the Laravel environment will be used
'environment' => config('app.env'),
diff --git a/config/version.php b/config/version.php
index 4ef54517c..7f08a2b47 100644
--- a/config/version.php
+++ b/config/version.php
@@ -1,3 +1,3 @@
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/docker/prod/Dockerfile b/docker/prod/Dockerfile
index 4ee3fade2..f46124062 100644
--- a/docker/prod/Dockerfile
+++ b/docker/prod/Dockerfile
@@ -17,6 +17,7 @@ ARG TARGETPLATFORM
# https://github.com/cloudflare/cloudflared/releases
ARG CLOUDFLARED_VERSION=2024.4.1
ARG POSTGRES_VERSION=15
+ARG CI=true
WORKDIR /var/www/html
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..feb8c5679 100644
--- a/resources/views/livewire/project/application/configuration.blade.php
+++ b/resources/views/livewire/project/application/configuration.blade.php
@@ -109,7 +109,7 @@