diff --git a/app/Filament/Pages/Installer/PanelInstaller.php b/app/Filament/Pages/Installer/PanelInstaller.php index b6aea2b09..160439086 100644 --- a/app/Filament/Pages/Installer/PanelInstaller.php +++ b/app/Filament/Pages/Installer/PanelInstaller.php @@ -103,6 +103,9 @@ class PanelInstaller extends SimplePage implements HasForms $variables = array_get($inputs, 'env'); $this->writeToEnvironment($variables); + // Clear config cache + Artisan::call('config:clear'); + // Run migrations Artisan::call('migrate', [ '--force' => true, diff --git a/app/Filament/Pages/Installer/Steps/DatabaseStep.php b/app/Filament/Pages/Installer/Steps/DatabaseStep.php index 94a7952e2..db9b36cea 100644 --- a/app/Filament/Pages/Installer/Steps/DatabaseStep.php +++ b/app/Filament/Pages/Installer/Steps/DatabaseStep.php @@ -7,7 +7,7 @@ use Filament\Forms\Components\Wizard\Step; use Filament\Forms\Get; use Filament\Notifications\Notification; use Filament\Support\Exceptions\Halt; -use Illuminate\Database\DatabaseManager; +use Illuminate\Support\Facades\DB; use PDOException; class DatabaseStep @@ -61,9 +61,6 @@ class DatabaseStep ->afterValidation(function (Get $get) { $driver = $get('env.DB_CONNECTION'); if ($driver !== 'sqlite') { - /** @var DatabaseManager $database */ - $database = app(DatabaseManager::class); - try { config()->set('database.connections._panel_install_test', [ 'driver' => $driver, @@ -77,7 +74,7 @@ class DatabaseStep 'strict' => true, ]); - $database->connection('_panel_install_test')->getPdo(); + DB::connection('_panel_install_test')->getPdo(); } catch (PDOException $exception) { Notification::make() ->title('Database connection failed') @@ -85,7 +82,7 @@ class DatabaseStep ->danger() ->send(); - $database->disconnect('_panel_install_test'); + DB::disconnect('_panel_install_test'); throw new Halt('Database connection failed'); } diff --git a/app/Filament/Pages/Installer/Steps/RedisStep.php b/app/Filament/Pages/Installer/Steps/RedisStep.php index 04a4b1b72..2ab176f40 100644 --- a/app/Filament/Pages/Installer/Steps/RedisStep.php +++ b/app/Filament/Pages/Installer/Steps/RedisStep.php @@ -2,8 +2,13 @@ namespace App\Filament\Pages\Installer\Steps; +use Exception; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Wizard\Step; +use Filament\Forms\Get; +use Filament\Notifications\Notification; +use Filament\Support\Exceptions\Halt; +use Illuminate\Support\Facades\Redis; class RedisStep { @@ -37,6 +42,26 @@ class RedisStep ->password() ->revealable() ->default(config('database.redis.default.password')), - ]); + ]) + ->afterValidation(function (Get $get) { + try { + config()->set('database.redis._panel_install_test', [ + 'host' => $get('env.REDIS_HOST'), + 'username' => $get('env.REDIS_USERNAME'), + 'password' => $get('env.REDIS_PASSWORD'), + 'port' => $get('env.REDIS_PORT'), + ]); + + Redis::connection('_panel_install_test')->command('ping'); + } catch (Exception $exception) { + Notification::make() + ->title('Redis connection failed') + ->body($exception->getMessage()) + ->danger() + ->send(); + + throw new Halt('Redis connection failed'); + } + }); } }