Setup Workflow (#3565)

* Fixes for setup
This commit is contained in:
David Bomba 2020-03-30 17:40:21 +11:00 committed by GitHub
parent 581654141b
commit 7a13f688e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 58 additions and 32 deletions

View File

@ -18,4 +18,4 @@ DB_PASSWORD=ninja
DB_HOST=127.0.0.1
NINJA_ENVIRONMENT=development
COMPOSER_AUTH='{"github-oauth": {"github.com": "${{ secrets.GITHUB_TOKEN }}"}}'
TRAVIS=true
TRAVIS=true

View File

@ -23,6 +23,7 @@ jobs:
NINJA_ENVIRONMENT: development
MULTI_DB_ENABLED: false
TRAVIS: true
MAIL_DRIVER: log
services:
mariadb:

View File

@ -11,7 +11,7 @@
namespace App\Http\Controllers;
use App\Libraries\Account;
use App\Models\Account;
use App\Models\Company;
use App\Models\Design;
use App\Models\User;
@ -305,8 +305,7 @@ class BaseController extends Controller
if ((bool)$this->checkAppSetup() !== false) {
$data = [];
if (Ninja::isSelfHost()) {
$account = Account::all()->first();
if (Ninja::isSelfHost() && $account = Account::all()->first()) {
$data['report_errors'] = $account->report_errors;
} else {
$data['report_errors'] = true;

View File

@ -12,6 +12,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\Setup\CheckDatabaseRequest;
use App\Http\Requests\Setup\CheckMailRequest;
use App\Http\Requests\Setup\StoreSetupRequest;
use App\Jobs\Account\CreateAccount;
use App\Models\Account;
@ -39,16 +40,17 @@ class SetupController extends Controller
public function doSetup(StoreSetupRequest $request)
{
$_ENV['APP_KEY'] = config('app.key');
$_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_DATABASE1'] = $request->input('database');
$_ENV['DB_USERNAME1'] = $request->input('db_username');
$_ENV['DB_PASSWORD1'] = $request->input('db_password');
$_ENV['MAIL_DRIVER'] = $request->input('mail_driver');
$_ENV['MAIL_PORT'] = $request->input('port');
$_ENV['MAIL_PORT'] = $request->input('mail_port');
$_ENV['MAIL_ENCRYPTION'] = $request->input('encryption');
$_ENV['MAIL_HOST'] = $request->input('mail_host');
$_ENV['MAIL_USERNAME'] = $request->input('mail_username');
@ -62,7 +64,6 @@ class SetupController extends Controller
$_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 = '';
@ -76,16 +77,24 @@ class SetupController extends Controller
$config .= "{$key}={$val}\n";
}
/* Write the .env file */
$filePath = base_path().'/.env';
$fp = fopen($filePath, 'w');
fwrite($fp, $config);
fclose($fp);
/* We need this in some environments that do not have STDIN defined */
define('STDIN',fopen("php://stdin","r"));
/* Make sure no stale connections are cached */
\DB::purge('db-ninja-01');
/* Run migrations */
Artisan::call('optimize');
Artisan::call('migrate');
Artisan::call('db:seed');
Artisan::call('horizon');
Artisan::call('migrate', ['--force' => true]);
Artisan::call('db:seed', ['--force' => true]);
/* Create the first account. */
if (Account::count() == 0) {
$account = CreateAccount::dispatchNow($request->all());
}
@ -101,14 +110,11 @@ class SetupController extends Controller
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) {
if (is_array($status) && $status['success'] === true) {
return response([], 200);
}
@ -120,23 +126,20 @@ class SetupController extends Controller
*
* @return Response
*/
public function checkMail(): Response
public function checkMail(CheckMailRequest $request)
{
// if (Account::count() == 0) {} /** This may not work, because we don't have 'account's table. */
try {
SystemHealth::testMailServer();
$response_array = SystemHealth::testMailServer($request);
$randomStatus = rand(0, 1);
if ($randomStatus)
if(count($response_array) == 0)
return response([], 200);
} catch (\Exception $e) {
info(['action' => 'SetupController::checkMail()', 'message' => $e->getMessage(),]);
else
return response()->json($response_array, 200);
return response([], 400);
} catch (\Exception $e) {
return response()->json(['message' => $e->getMessage()], 400);
}
}
}

View File

@ -20,19 +20,32 @@ use Symfony\Component\HttpFoundation\Response;
class CreateAccount
{
use Dispatchable;
protected $request;
public function __construct(array $sp660339)
{
$this->request = $sp660339;
}
public function handle()
{
if (config('ninja.environment') == 'selfhost' && Account::all()->count() > 1) {
if(config('ninja.environment') == 'selfhost' && Account::all()->count() == 0) {
$this->create();
}elseif (config('ninja.environment') == 'selfhost' && Account::all()->count() > 1) {
return response()->json(array('message' => Ninja::selfHostedMessage()), 400);
} elseif (!Ninja::boot()) {
return response()->json(array('message' => Ninja::parse()), 401);
}
}
private function create()
{
$sp794f3f = Account::create($this->request);
$sp794f3f->referral_code = Str::random(32);
@ -58,5 +71,7 @@ class CreateAccount
$spaa9f78->fresh();
$sp035a66->notification(new NewAccountCreated($spaa9f78, $sp035a66))->ninja();
return $sp794f3f;
}
}

View File

@ -55,7 +55,7 @@ class CreateCompanyToken implements ShouldQueue
$ct = CompanyToken::create([
'user_id' => $this->user->id,
'account_id' => $this->company->account->id,
'account_id' => $this->user->account->id,
'token' => Str::random(64),
'name' => $this->custom_token_name ?: $this->user->first_name. ' '. $this->user->last_name,
'company_id' => $this->company->id,

View File

@ -46,8 +46,15 @@ class SendVerificationNotification implements ShouldQueue
{
MultiDB::setDB($event->company->db);
$event->user->notify(new VerifyUser($event->user));
try {
Ninja::registerNinjaUser($event->user);
$event->user->notify(new VerifyUser($event->user));
Ninja::registerNinjaUser($event->user);
}
catch(\Exception $e){
}
}
}

View File

@ -137,19 +137,20 @@ class SystemHealth
Mail::to(config('mail.from.address'))
->send(new TestMailServer('Email Server Works!', config('mail.from.address')));
} catch (\Exception $e) {
\Log::error($e->getMessage());
return $e->getMessage();
}
if (count(Mail::failures()) > 0) {
\Log::error(print_r(Mail::failures(),1));
return Mail::failures();
}
return [];
return response()->json(['message'=>'Success'],200);
}
private static function checkEnvWritable()
{
return is_writable(base_path().'/.env');
//return @fopen(base_path().'/.env', 'w');
}
}