1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-21 08:51:34 +02:00
invoiceninja/app/Http/Controllers/SetupController.php
David Bomba 8b0fe63eb5
Send Generic entity email. (#3560)
* Enable identifying a user who submits a report to sentry for tracking purposes

* Minor fix for setup page

* Fixes for Tests

* Fixes for tests

* Generic Entity Emailer

* Fixes for emailing a generic entity
2020-03-29 23:22:14 +11:00

143 lines
4.2 KiB
PHP

<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Http\Controllers;
use App\Http\Requests\Setup\CheckDatabaseRequest;
use App\Http\Requests\Setup\StoreSetupRequest;
use App\Jobs\Account\CreateAccount;
use App\Models\Account;
use App\Utils\SystemHealth;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Artisan;
/**
* Class SetupController
*/
class SetupController extends Controller
{
public function index()
{
$data = SystemHealth::check();
if ($data['system_health'] !== false) {
return view('setup.index', $data);
}
if ($system_health !== true) {
return redirect('/');
}
}
public function doSetup(StoreSetupRequest $request)
{
$_ENV['APP_URL'] = $request->input('url');
$_ENV['APP_DEBUG'] = $request->input('debug') ? 'true' : 'false';
$_ENV['REQUIRE_HTTPS'] = $request->input('https') ? 'true' : 'false';
$_ENV['DB_TYPE'] = 'mysql';
$_ENV['DB_HOST1'] = $request->input('host');
$_ENV['DB_DATABASE1'] = $request->input('db_username');
$_ENV['DB_USERNAME1'] = $request->input('db_password');
$_ENV['DB_PASSWORD1'] = $request->input('db_password');
$_ENV['MAIL_DRIVER'] = $request->input('mail_driver');
$_ENV['MAIL_PORT'] = $request->input('port');
$_ENV['MAIL_ENCRYPTION'] = $request->input('encryption');
$_ENV['MAIL_HOST'] = $request->input('mail_host');
$_ENV['MAIL_USERNAME'] = $request->input('mail_username');
$_ENV['MAIL_FROM_NAME'] = $request->input('mail_name');
$_ENV['MAIL_FROM_ADDRESS'] = $request->input('mail_address');
$_ENV['MAIL_PASSWORD'] = $request->input('mail_password');
$_ENV['NINJA_ENVIRONMENT'] = 'selfhost';
$_ENV['SELF_UPDATER_REPO_VENDOR'] = 'invoiceninja';
$_ENV['SELF_UPDATER_REPO_NAME'] = 'invoiceninja';
$_ENV['SELF_UPDATER_USE_BRANCH'] = 'v2';
$_ENV['SELF_UPDATER_MAILTO_ADDRESS'] = $request->input('mail_address');
$_ENV['SELF_UPDATER_MAILTO_NAME'] = $request->input('mail_name');
$_ENV['DB_CONNECTION'] = 'db-ninja-01';
$_ENV['APP_DEBUG'] = false;
$config = '';
foreach ($_ENV as $key => $val) {
if (is_array($val)) {
continue;
}
if (preg_match('/\s/', $val)) {
$val = "'{$val}'";
}
$config .= "{$key}={$val}\n";
}
$filePath = base_path().'/.env';
$fp = fopen($filePath, 'w');
fwrite($fp, $config);
fclose($fp);
Artisan::call('optimize');
Artisan::call('migrate');
Artisan::call('db:seed');
Artisan::call('horizon');
if (Account::count() == 0) {
$account = CreateAccount::dispatchNow($request->all());
}
return redirect('/');
}
/**
* Return status based on check of database connection.
*
* @return Response
*/
public function checkDB(CheckDatabaseRequest $request): Response
{
if (Account::count() == 0) { /** This may not work, because we don't have 'account's table. */
}
$status = SystemHealth::dbCheck($request);
info($status);
if (gettype($status) == 'array' && $status['success'] === true) {
return response([], 200);
}
return response([], 400);
}
/**
* Return status based on check of SMTP connection.
*
* @return Response
*/
public function checkMail(): Response
{
// if (Account::count() == 0) {} /** This may not work, because we don't have 'account's table. */
try {
SystemHealth::testMailServer();
$randomStatus = rand(0, 1);
if ($randomStatus)
return response([], 200);
} catch (\Exception $e) {
info(['action' => 'SetupController::checkMail()', 'message' => $e->getMessage(),]);
return response([], 400);
}
}
}