Support for database port on the setup

This commit is contained in:
Benjamin Beganović 2021-01-04 13:36:47 +01:00
parent 66d6595a90
commit 14efcc77e6
7 changed files with 51 additions and 47 deletions

View File

@ -22,7 +22,7 @@ use App\Utils\CurlUtils;
use App\Utils\SystemHealth; use App\Utils\SystemHealth;
use App\Utils\Traits\AppSetup; use App\Utils\Traits\AppSetup;
use Beganovich\Snappdf\Snappdf; use Beganovich\Snappdf\Snappdf;
use DB; use \Illuminate\Support\Facades\DB;
use Exception; use Exception;
use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Contracts\Routing\ResponseFactory;
@ -55,7 +55,7 @@ class SetupController extends Controller
{ {
try { try {
$check = SystemHealth::check(false); $check = SystemHealth::check(false);
} catch (\Exception $e) { } catch (Exception $e) {
nlog(['message' => $e->getMessage(), 'action' => 'SetupController::doSetup()']); nlog(['message' => $e->getMessage(), 'action' => 'SetupController::doSetup()']);
return response()->json(['message' => $e->getMessage()], 400); return response()->json(['message' => $e->getMessage()], 400);
@ -71,9 +71,9 @@ class SetupController extends Controller
$db = SystemHealth::dbCheck($request); $db = SystemHealth::dbCheck($request);
if ($db['success'] == false) { if ($db['success'] == false) {
throw new \Exception($db['message']); throw new Exception($db['message']);
} }
} catch (\Exception $e) { } catch (Exception $e) {
return response([ return response([
'message' => 'Oops, connection to database was not successful.', 'message' => 'Oops, connection to database was not successful.',
'error' => $e->getMessage(), 'error' => $e->getMessage(),
@ -85,10 +85,10 @@ class SetupController extends Controller
$smtp = SystemHealth::testMailServer($request); $smtp = SystemHealth::testMailServer($request);
if ($smtp['success'] == false) { if ($smtp['success'] == false) {
throw new \Exception($smtp['message']); throw new Exception($smtp['message']);
} }
} }
} catch (\Exception $e) { } catch (Exception $e) {
return response([ return response([
'message' => 'Oops, connection to mail server was not successful.', 'message' => 'Oops, connection to mail server was not successful.',
'error' => $e->getMessage(), 'error' => $e->getMessage(),
@ -103,6 +103,7 @@ class SetupController extends Controller
'APP_DEBUG' => $request->input('debug') ? 'true' : 'false', 'APP_DEBUG' => $request->input('debug') ? 'true' : 'false',
'DB_HOST1' => $request->input('db_host'), 'DB_HOST1' => $request->input('db_host'),
'DB_PORT1' => $request->input('db_port'),
'DB_DATABASE1' => $request->input('db_database'), 'DB_DATABASE1' => $request->input('db_database'),
'DB_USERNAME1' => $request->input('db_username'), 'DB_USERNAME1' => $request->input('db_username'),
'DB_PASSWORD1' => $request->input('db_password'), 'DB_PASSWORD1' => $request->input('db_password'),
@ -173,7 +174,7 @@ class SetupController extends Controller
} }
return response($status, 400); return response($status, 400);
} catch (\Exception $e) { } catch (Exception $e) {
nlog(['message' => $e->getMessage(), 'action' => 'SetupController::checkDB()']); nlog(['message' => $e->getMessage(), 'action' => 'SetupController::checkDB()']);
return response()->json(['message' => $e->getMessage()], 400); return response()->json(['message' => $e->getMessage()], 400);
@ -203,17 +204,6 @@ class SetupController extends Controller
} }
} }
private function failsafeMailCheck($request)
{
$response = SystemHealth::testMailServer($request);
if ($response['success']) {
true;
}
return false;
}
public function checkPdf(Request $request) public function checkPdf(Request $request)
{ {
try { try {
@ -231,9 +221,10 @@ class SetupController extends Controller
->setHtml('GENERATING PDFs WORKS! Thank you for using Invoice Ninja!') ->setHtml('GENERATING PDFs WORKS! Thank you for using Invoice Ninja!')
->generate(); ->generate();
Storage::put('public/test.pdf', $pdf); Storage::disk(config('filesystems.default'))->put('test.pdf', $pdf);
Storage::disk('local')->put('test.pdf', $pdf);
return response(['url' => asset('test.pdf')], 200); return response(['url' => Storage::disk('local')->url('test.pdf')], 200);
} catch (Exception $e) { } catch (Exception $e) {
nlog($e->getMessage()); nlog($e->getMessage());

View File

@ -35,6 +35,7 @@ class CheckDatabaseRequest extends Request
{ {
return [ return [
'db_host' => ['required'], 'db_host' => ['required'],
'db_port' => ['required'],
'db_database' => ['required'], 'db_database' => ['required'],
'db_username' => ['required'], 'db_username' => ['required'],
]; ];

View File

@ -152,6 +152,7 @@ class SystemHealth
if ($request) { if ($request) {
config(['database.connections.db-ninja-01.host' => $request->input('db_host')]); config(['database.connections.db-ninja-01.host' => $request->input('db_host')]);
config(['database.connections.db-ninja-01.port' => $request->input('db_port')]);
config(['database.connections.db-ninja-01.database' => $request->input('db_database')]); config(['database.connections.db-ninja-01.database' => $request->input('db_database')]);
config(['database.connections.db-ninja-01.username' => $request->input('db_username')]); config(['database.connections.db-ninja-01.username' => $request->input('db_username')]);
config(['database.connections.db-ninja-01.password' => $request->input('db_password')]); config(['database.connections.db-ninja-01.password' => $request->input('db_password')]);

File diff suppressed because one or more lines are too long

View File

@ -15,6 +15,6 @@
"/js/clients/quotes/approve.js": "/js/clients/quotes/approve.js?id=85bcae0a646882e56b12", "/js/clients/quotes/approve.js": "/js/clients/quotes/approve.js?id=85bcae0a646882e56b12",
"/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=5c35d28cf0a3286e7c45", "/js/clients/shared/multiple-downloads.js": "/js/clients/shared/multiple-downloads.js?id=5c35d28cf0a3286e7c45",
"/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=fa54bb4229aba6b0817c", "/js/clients/shared/pdf.js": "/js/clients/shared/pdf.js?id=fa54bb4229aba6b0817c",
"/js/setup/setup.js": "/js/setup/setup.js?id=29e88ab480038cba57df", "/js/setup/setup.js": "/js/setup/setup.js?id=8cb5e2bb0d404725c20a",
"/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad" "/css/card-js.min.css": "/css/card-js.min.css?id=62afeb675235451543ad"
} }

View File

@ -25,6 +25,7 @@ class Setup {
handleDatabaseCheck() { handleDatabaseCheck() {
let data = { let data = {
db_host: document.querySelector('input[name="db_host"]').value, db_host: document.querySelector('input[name="db_host"]').value,
db_port: document.querySelector('input[name="db_port"]').value,
db_database: document.querySelector('input[name="db_database"]') db_database: document.querySelector('input[name="db_database"]')
.value, .value,
db_username: document.querySelector('input[name="db_username"]') db_username: document.querySelector('input[name="db_username"]')
@ -33,13 +34,15 @@ class Setup {
.value, .value,
}; };
this.checkDbButton.disabled = true;
Axios.post('/setup/check_db', data) Axios.post('/setup/check_db', data)
.then((response) => .then((response) =>
this.handleSuccess(this.checkDbAlert, 'mail-wrapper') this.handleSuccess(this.checkDbAlert, 'mail-wrapper')
) )
.catch((e) => .catch((e) =>
this.handleFailure(this.checkDbAlert, e.response.data.message) this.handleFailure(this.checkDbAlert, e.response.data.message)
); ).finally(() => this.checkDbButton.disabled = false);
} }
handleSmtpCheck() { handleSmtpCheck() {

View File

@ -42,6 +42,14 @@ FLUSH PRIVILEGES;
</dd> </dd>
</div> </div>
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center"> <div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center">
<dt class="text-sm leading-5 font-medium text-gray-500">
{{ ctrans('texts.port') }}*
</dt>
<dd class="text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
<input type="text" class="input w-full" name="db_port" required value="{{ old('db_port') ?: '3306'}}">
</dd>
</div>
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center">
<dt class="text-sm leading-5 font-medium text-gray-500"> <dt class="text-sm leading-5 font-medium text-gray-500">
{{ ctrans('texts.database') }}* {{ ctrans('texts.database') }}*
</dt> </dt>
@ -49,15 +57,15 @@ FLUSH PRIVILEGES;
<input type="text" class="input w-full" name="db_database" required value="{{ old('database') ?: 'db-ninja-01'}}"> <input type="text" class="input w-full" name="db_database" required value="{{ old('database') ?: 'db-ninja-01'}}">
</dd> </dd>
</div> </div>
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center"> <div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center">
<dt class="text-sm leading-5 font-medium text-gray-500" value="{{ old('username') }}"> <dt class="text-sm leading-5 font-medium text-gray-500">
{{ ctrans('texts.username') }}* {{ ctrans('texts.username') }}*
</dt> </dt>
<dd class="text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
<input type="text" class="input w-full" name="db_username" required value="{{ old('db_username') ?: 'ninja' }}"> <input type="text" class="input w-full" name="db_username" required value="{{ old('db_username') ?: 'ninja' }}">
</dd> </dd>
</div> </div>
<div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center"> <div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center">
<dt class="text-sm leading-5 font-medium text-gray-500"> <dt class="text-sm leading-5 font-medium text-gray-500">
{{ ctrans('texts.password') }} {{ ctrans('texts.password') }}
</dt> </dt>
@ -65,14 +73,14 @@ FLUSH PRIVILEGES;
<input type="password" class="input w-full" name="db_password" value="{{ old('db_password') ?: 'ninja' }}"> <input type="password" class="input w-full" name="db_password" value="{{ old('db_password') ?: 'ninja' }}">
</dd> </dd>
</div> </div>
<div class="bg-gray-50 px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center"> <div class="bg-white px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6 sm:flex sm:items-center">
<dt class="text-sm leading-5 font-medium text-gray-500"> <dt class="text-sm leading-5 font-medium text-gray-500">
<button type="button" class="button button-primary bg-blue-600 py-2 px-3 text-xs" id="test-db-connection"> <button type="button" class="button button-primary bg-blue-600 py-2 px-3 text-xs" id="test-db-connection">
{{ ctrans('texts.test_connection') }} {{ ctrans('texts.test_connection') }}
</button> </button>
</dt> </dt>
<dd class="text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2"> <dd class="text-sm leading-5 text-gray-900 sm:mt-0 sm:col-span-2">
<div class="alert py-2 bg-gray-50" id="database-response"></div> <div class="alert py-2 bg-white" id="database-response"></div>
</dd> </dd>
</div> </div>
</dl> </dl>