diff --git a/app/Http/Controllers/System/InstallController.php b/app/Http/Controllers/System/InstallController.php index 711f091db4..c4c779c1db 100644 --- a/app/Http/Controllers/System/InstallController.php +++ b/app/Http/Controllers/System/InstallController.php @@ -153,6 +153,34 @@ class InstallController extends Controller return response()->json(['error' => false, 'message' => 'OK']); } + /** + * Do database decrypt. + * + * @return \Illuminate\Http\JsonResponse + */ + public function decrypt(): JsonResponse + { + if ($this->hasForbiddenFunctions()) { + return response()->json(['error' => true, 'message' => self::FORBIDDEN_ERROR]); + } + try { + Log::debug('Am now calling decrypt database routine...'); + Artisan::call('firefly:decrypt-all'); + Log::debug(Artisan::output()); + } catch (Exception $e) { + Log::error($e->getMessage()); + Log::error($e->getTraceAsString()); + if (strpos($e->getMessage(), 'open_basedir restriction in effect')) { + return response()->json(['error' => true, 'message' => self::BASEDIR_ERROR]); + } + + return response()->json(['error' => true, 'message' => self::OTHER_ERROR . ' ' . $e->getMessage()]); + } + + return response()->json(['error' => false, 'message' => 'OK']); + } + + /** * Do database verification. * diff --git a/public/v1/js/ff/install/index.js b/public/v1/js/ff/install/index.js index 66b4a50429..6c1fe2e4a1 100644 --- a/public/v1/js/ff/install/index.js +++ b/public/v1/js/ff/install/index.js @@ -30,6 +30,22 @@ function startMigration() { $('#status-box').html(' Setting up DB...'); $.post(migrateUri, {_token: token}).done(function (data) { if(data.error === false) { + // move to decrypt routine. + startDecryption(); + } else { + displaySoftFail(data.message); + } + + }).fail(function () { + $('#status-box').html(' Migration failed! See log files :('); + }); +} + +function startDecryption() { + $('#status-box').html(' Setting up DB #2...'); + $.post(decryptUri, {_token: token}).done(function (data) { + if(data.error === false) { + // move to decrypt routine. startPassport(); } else { displaySoftFail(data.message); diff --git a/resources/views/v1/install/index.twig b/resources/views/v1/install/index.twig index 6a3c3118f0..36d9fd56c2 100644 --- a/resources/views/v1/install/index.twig +++ b/resources/views/v1/install/index.twig @@ -19,6 +19,7 @@ var keysUri = '{{ route('installer.keys') }}'; var upgradeUri = '{{ route('installer.upgrade') }}'; var verifyUri = '{{ route('installer.verify') }}'; + var decryptUri = '{{ route('installer.decrypt') }}'; var homeUri = '{{ route('home') }}'; diff --git a/routes/web.php b/routes/web.php index 10be4ae45c..86cedba3f8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -30,6 +30,7 @@ Route::group( Route::post('keys', ['uses' => 'InstallController@keys', 'as' => 'keys']); Route::post('upgrade', ['uses' => 'InstallController@upgrade', 'as' => 'upgrade']); Route::post('verify', ['uses' => 'InstallController@verify', 'as' => 'verify']); + Route::post('decrypt', ['uses' => 'InstallController@decrypt', 'as' => 'decrypt']); } );