Installer: Shows errors on submit & move runMigrations (#722)

* catch Halt exception to make sure error notifications are displayed

* run migrations on submit to make sure the correct data is used
This commit is contained in:
Boy132 2024-12-01 04:04:40 +01:00 committed by GitHub
parent cd448cd9a7
commit e0c6137b92
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 19 deletions

View File

@ -23,8 +23,6 @@ use Filament\Notifications\Notification;
use Filament\Pages\SimplePage; use Filament\Pages\SimplePage;
use Filament\Support\Enums\MaxWidth; use Filament\Support\Enums\MaxWidth;
use Filament\Support\Exceptions\Halt; use Filament\Support\Exceptions\Halt;
use Illuminate\Http\RedirectResponse;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Blade;
use Illuminate\Support\HtmlString; use Illuminate\Support\HtmlString;
@ -91,20 +89,26 @@ class PanelInstaller extends SimplePage implements HasForms
return 'data'; return 'data';
} }
public function submit(UserCreationService $userCreationService): Redirector|RedirectResponse public function submit(UserCreationService $userCreationService): void
{ {
// Disable installer try {
$this->writeToEnvironment(['APP_INSTALLED' => 'true']); // Disable installer
$this->writeToEnvironment(['APP_INSTALLED' => 'true']);
// Create admin user & login // Run migrations
$user = $this->createAdminUser($userCreationService); $this->runMigrations();
auth()->guard()->login($user, true);
// Write session data at the very end to avoid "page expired" errors // Create admin user & login
$this->writeToEnv('env_session'); $user = $this->createAdminUser($userCreationService);
auth()->guard()->login($user, true);
// Redirect to admin panel // Write session data at the very end to avoid "page expired" errors
return redirect(Dashboard::getUrl()); $this->writeToEnv('env_session');
// Redirect to admin panel
$this->redirect(Dashboard::getUrl());
} catch (Halt) {
}
} }
public function writeToEnv(string $key): void public function writeToEnv(string $key): void
@ -129,13 +133,12 @@ class PanelInstaller extends SimplePage implements HasForms
Artisan::call('config:clear'); Artisan::call('config:clear');
} }
public function runMigrations(string $driver): void public function runMigrations(): void
{ {
try { try {
Artisan::call('migrate', [ Artisan::call('migrate', [
'--force' => true, '--force' => true,
'--seed' => true, '--seed' => true,
'--database' => $driver,
]); ]);
} catch (Exception $exception) { } catch (Exception $exception) {
report($exception); report($exception);

View File

@ -97,8 +97,6 @@ class DatabaseStep
} }
$installer->writeToEnv('env_database'); $installer->writeToEnv('env_database');
$installer->runMigrations($driver);
}); });
} }

View File

@ -57,8 +57,6 @@ class QueueStep
->hidden(fn () => file_exists('/.dockerenv')) ->hidden(fn () => file_exists('/.dockerenv'))
->columnSpanFull(), ->columnSpanFull(),
]) ])
->afterValidation(function () use ($installer) { ->afterValidation(fn () => $installer->writeToEnv('env_queue'));
$installer->writeToEnv('env_queue');
});
} }
} }