From 46a76f7bce2ec8a54aa8ef28c7ba49afb0b5232e Mon Sep 17 00:00:00 2001 From: Harry Bayliss Date: Thu, 24 Apr 2025 19:08:21 +0100 Subject: [PATCH] redirect to server show page if a gateway is not installed on a given server --- app/Drivers/DatabaseDriver.php | 4 +++ app/Drivers/Postgres/Postgres17Driver.php | 7 ++++- .../Controllers/EnvironmentController.php | 8 +++++- resources/js/components/RadioButton.vue | 2 +- resources/js/components/ServerSelector.vue | 28 ++++++++++++++----- resources/js/pages/environments/Show.vue | 25 +++++++++++++++-- resources/js/pages/servers/Show.vue | 2 +- 7 files changed, 62 insertions(+), 14 deletions(-) diff --git a/app/Drivers/DatabaseDriver.php b/app/Drivers/DatabaseDriver.php index b1597b5..b04b0e0 100644 --- a/app/Drivers/DatabaseDriver.php +++ b/app/Drivers/DatabaseDriver.php @@ -15,4 +15,8 @@ abstract class DatabaseDriver extends Driver ?string $containerId = null, ?array $credentials = null, ); + + abstract public function createUser(string $user, string $password): string; + + // abstract public function createDatabase(string $db, string $user): string; } diff --git a/app/Drivers/Postgres/Postgres17Driver.php b/app/Drivers/Postgres/Postgres17Driver.php index bd206f7..200ad71 100644 --- a/app/Drivers/Postgres/Postgres17Driver.php +++ b/app/Drivers/Postgres/Postgres17Driver.php @@ -55,7 +55,7 @@ class Postgres17Driver extends DatabaseDriver } ), new Step( - name: 'Configure firewall', + name: 'Configure firewall', // @todo this should create a Firewallrule script: 'ufw allow 5432/tcp || true', ), ]); @@ -69,4 +69,9 @@ class Postgres17Driver extends DatabaseDriver 'db' => 'keystone', ]; } + + public function createUser(string $user, string $password): string + { + return "psql -U {$this->credentials['user']} -d {$this->credentials['db']} -c \"CREATE USER {$user} WITH PASSWORD '{$password}';\""; + } } diff --git a/app/Http/Controllers/EnvironmentController.php b/app/Http/Controllers/EnvironmentController.php index 070ed4b..1b943fd 100644 --- a/app/Http/Controllers/EnvironmentController.php +++ b/app/Http/Controllers/EnvironmentController.php @@ -16,7 +16,13 @@ class EnvironmentController extends Controller return inertia('environments/Show', [ 'environment' => $environment, 'servers' => inertia()->optional(function () use ($environment) { - return $environment->application?->organisation?->servers->where('status', ServerStatus::ACTIVE)?->values() ?? []; + return $environment + ->application + ?->organisation + ?->servers() + ->where('status', ServerStatus::ACTIVE) + ->with('services') + ->get() ?? []; }), ]); } diff --git a/resources/js/components/RadioButton.vue b/resources/js/components/RadioButton.vue index 1c16fab..3d9723d 100644 --- a/resources/js/components/RadioButton.vue +++ b/resources/js/components/RadioButton.vue @@ -15,7 +15,7 @@ function onChange(event) { diff --git a/resources/js/pages/environments/Show.vue b/resources/js/pages/environments/Show.vue index f29b36c..5fdaf0d 100644 --- a/resources/js/pages/environments/Show.vue +++ b/resources/js/pages/environments/Show.vue @@ -1,8 +1,9 @@ -