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']);
}
);