Fix redis connection check (#698)

This commit is contained in:
Boy132 2024-11-01 18:10:36 +01:00 committed by GitHub
parent f793b49a81
commit 382dcb3868
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -10,7 +10,8 @@ use Filament\Forms\Components\Wizard\Step;
use Filament\Forms\Get; use Filament\Forms\Get;
use Filament\Notifications\Notification; use Filament\Notifications\Notification;
use Filament\Support\Exceptions\Halt; use Filament\Support\Exceptions\Halt;
use Illuminate\Support\Facades\Redis; use Illuminate\Foundation\Application;
use Illuminate\Redis\RedisManager;
class RedisStep class RedisStep
{ {
@ -47,8 +48,8 @@ class RedisStep
->revealable() ->revealable()
->default(config('database.redis.default.password')), ->default(config('database.redis.default.password')),
]) ])
->afterValidation(function (Get $get) use ($installer) { ->afterValidation(function (Get $get, Application $app) use ($installer) {
if (!self::testConnection($get('env_redis.REDIS_HOST'), $get('env_redis.REDIS_PORT'), $get('env_redis.REDIS_USERNAME'), $get('env_redis.REDIS_PASSWORD'))) { if (!self::testConnection($app, $get('env_redis.REDIS_HOST'), $get('env_redis.REDIS_PORT'), $get('env_redis.REDIS_USERNAME'), $get('env_redis.REDIS_PASSWORD'))) {
throw new Halt('Redis connection failed'); throw new Halt('Redis connection failed');
} }
@ -56,17 +57,19 @@ class RedisStep
}); });
} }
private static function testConnection(string $host, null|string|int $port, ?string $username, ?string $password): bool private static function testConnection(Application $app, string $host, null|string|int $port, ?string $username, ?string $password): bool
{ {
try { try {
config()->set('database.redis._panel_install_test', [ $redis = new RedisManager($app, 'predis', [
'host' => $host, 'default' => [
'port' => $port, 'host' => $host,
'username' => $username, 'port' => $port,
'password' => $password, 'username' => $username,
'password' => $password,
],
]); ]);
Redis::connection('_panel_install_test')->command('ping'); $redis->connection()->command('ping');
} catch (Exception $exception) { } catch (Exception $exception) {
Notification::make() Notification::make()
->title('Redis connection failed') ->title('Redis connection failed')