mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 09:24:34 -04:00
parent
581654141b
commit
7a13f688e7
2
.env.ci
2
.env.ci
@ -18,4 +18,4 @@ DB_PASSWORD=ninja
|
|||||||
DB_HOST=127.0.0.1
|
DB_HOST=127.0.0.1
|
||||||
NINJA_ENVIRONMENT=development
|
NINJA_ENVIRONMENT=development
|
||||||
COMPOSER_AUTH='{"github-oauth": {"github.com": "${{ secrets.GITHUB_TOKEN }}"}}'
|
COMPOSER_AUTH='{"github-oauth": {"github.com": "${{ secrets.GITHUB_TOKEN }}"}}'
|
||||||
TRAVIS=true
|
TRAVIS=true
|
||||||
|
1
.github/workflows/phpunit.yml
vendored
1
.github/workflows/phpunit.yml
vendored
@ -23,6 +23,7 @@ jobs:
|
|||||||
NINJA_ENVIRONMENT: development
|
NINJA_ENVIRONMENT: development
|
||||||
MULTI_DB_ENABLED: false
|
MULTI_DB_ENABLED: false
|
||||||
TRAVIS: true
|
TRAVIS: true
|
||||||
|
MAIL_DRIVER: log
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mariadb:
|
mariadb:
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Libraries\Account;
|
use App\Models\Account;
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Models\Design;
|
use App\Models\Design;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
@ -305,8 +305,7 @@ class BaseController extends Controller
|
|||||||
if ((bool)$this->checkAppSetup() !== false) {
|
if ((bool)$this->checkAppSetup() !== false) {
|
||||||
$data = [];
|
$data = [];
|
||||||
|
|
||||||
if (Ninja::isSelfHost()) {
|
if (Ninja::isSelfHost() && $account = Account::all()->first()) {
|
||||||
$account = Account::all()->first();
|
|
||||||
$data['report_errors'] = $account->report_errors;
|
$data['report_errors'] = $account->report_errors;
|
||||||
} else {
|
} else {
|
||||||
$data['report_errors'] = true;
|
$data['report_errors'] = true;
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Http\Requests\Setup\CheckDatabaseRequest;
|
use App\Http\Requests\Setup\CheckDatabaseRequest;
|
||||||
|
use App\Http\Requests\Setup\CheckMailRequest;
|
||||||
use App\Http\Requests\Setup\StoreSetupRequest;
|
use App\Http\Requests\Setup\StoreSetupRequest;
|
||||||
use App\Jobs\Account\CreateAccount;
|
use App\Jobs\Account\CreateAccount;
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
@ -39,16 +40,17 @@ class SetupController extends Controller
|
|||||||
|
|
||||||
public function doSetup(StoreSetupRequest $request)
|
public function doSetup(StoreSetupRequest $request)
|
||||||
{
|
{
|
||||||
|
$_ENV['APP_KEY'] = config('app.key');
|
||||||
$_ENV['APP_URL'] = $request->input('url');
|
$_ENV['APP_URL'] = $request->input('url');
|
||||||
$_ENV['APP_DEBUG'] = $request->input('debug') ? 'true' : 'false';
|
$_ENV['APP_DEBUG'] = $request->input('debug') ? 'true' : 'false';
|
||||||
$_ENV['REQUIRE_HTTPS'] = $request->input('https') ? 'true' : 'false';
|
$_ENV['REQUIRE_HTTPS'] = $request->input('https') ? 'true' : 'false';
|
||||||
$_ENV['DB_TYPE'] = 'mysql';
|
$_ENV['DB_TYPE'] = 'mysql';
|
||||||
$_ENV['DB_HOST1'] = $request->input('host');
|
$_ENV['DB_HOST1'] = $request->input('host');
|
||||||
$_ENV['DB_DATABASE1'] = $request->input('db_username');
|
$_ENV['DB_DATABASE1'] = $request->input('database');
|
||||||
$_ENV['DB_USERNAME1'] = $request->input('db_password');
|
$_ENV['DB_USERNAME1'] = $request->input('db_username');
|
||||||
$_ENV['DB_PASSWORD1'] = $request->input('db_password');
|
$_ENV['DB_PASSWORD1'] = $request->input('db_password');
|
||||||
$_ENV['MAIL_DRIVER'] = $request->input('mail_driver');
|
$_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_ENCRYPTION'] = $request->input('encryption');
|
||||||
$_ENV['MAIL_HOST'] = $request->input('mail_host');
|
$_ENV['MAIL_HOST'] = $request->input('mail_host');
|
||||||
$_ENV['MAIL_USERNAME'] = $request->input('mail_username');
|
$_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_ADDRESS'] = $request->input('mail_address');
|
||||||
$_ENV['SELF_UPDATER_MAILTO_NAME'] = $request->input('mail_name');
|
$_ENV['SELF_UPDATER_MAILTO_NAME'] = $request->input('mail_name');
|
||||||
$_ENV['DB_CONNECTION'] = 'db-ninja-01';
|
$_ENV['DB_CONNECTION'] = 'db-ninja-01';
|
||||||
$_ENV['APP_DEBUG'] = false;
|
|
||||||
|
|
||||||
$config = '';
|
$config = '';
|
||||||
|
|
||||||
@ -76,16 +77,24 @@ class SetupController extends Controller
|
|||||||
$config .= "{$key}={$val}\n";
|
$config .= "{$key}={$val}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Write the .env file */
|
||||||
$filePath = base_path().'/.env';
|
$filePath = base_path().'/.env';
|
||||||
$fp = fopen($filePath, 'w');
|
$fp = fopen($filePath, 'w');
|
||||||
fwrite($fp, $config);
|
fwrite($fp, $config);
|
||||||
fclose($fp);
|
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('optimize');
|
||||||
Artisan::call('migrate');
|
Artisan::call('migrate', ['--force' => true]);
|
||||||
Artisan::call('db:seed');
|
Artisan::call('db:seed', ['--force' => true]);
|
||||||
Artisan::call('horizon');
|
|
||||||
|
|
||||||
|
/* Create the first account. */
|
||||||
if (Account::count() == 0) {
|
if (Account::count() == 0) {
|
||||||
$account = CreateAccount::dispatchNow($request->all());
|
$account = CreateAccount::dispatchNow($request->all());
|
||||||
}
|
}
|
||||||
@ -101,14 +110,11 @@ class SetupController extends Controller
|
|||||||
public function checkDB(CheckDatabaseRequest $request): 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);
|
$status = SystemHealth::dbCheck($request);
|
||||||
|
|
||||||
info($status);
|
info($status);
|
||||||
|
|
||||||
if (gettype($status) == 'array' && $status['success'] === true) {
|
if (is_array($status) && $status['success'] === true) {
|
||||||
return response([], 200);
|
return response([], 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,23 +126,20 @@ class SetupController extends Controller
|
|||||||
*
|
*
|
||||||
* @return Response
|
* @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 {
|
try {
|
||||||
SystemHealth::testMailServer();
|
$response_array = SystemHealth::testMailServer($request);
|
||||||
|
|
||||||
$randomStatus = rand(0, 1);
|
if(count($response_array) == 0)
|
||||||
|
|
||||||
if ($randomStatus)
|
|
||||||
return response([], 200);
|
return response([], 200);
|
||||||
|
else
|
||||||
} catch (\Exception $e) {
|
return response()->json($response_array, 200);
|
||||||
info(['action' => 'SetupController::checkMail()', 'message' => $e->getMessage(),]);
|
|
||||||
|
|
||||||
return response([], 400);
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return response()->json(['message' => $e->getMessage()], 400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,19 +20,32 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
|
|
||||||
class CreateAccount
|
class CreateAccount
|
||||||
{
|
{
|
||||||
|
|
||||||
use Dispatchable;
|
use Dispatchable;
|
||||||
|
|
||||||
protected $request;
|
protected $request;
|
||||||
|
|
||||||
public function __construct(array $sp660339)
|
public function __construct(array $sp660339)
|
||||||
{
|
{
|
||||||
$this->request = $sp660339;
|
$this->request = $sp660339;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle()
|
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);
|
return response()->json(array('message' => Ninja::selfHostedMessage()), 400);
|
||||||
} elseif (!Ninja::boot()) {
|
} elseif (!Ninja::boot()) {
|
||||||
return response()->json(array('message' => Ninja::parse()), 401);
|
return response()->json(array('message' => Ninja::parse()), 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function create()
|
||||||
|
{
|
||||||
|
|
||||||
$sp794f3f = Account::create($this->request);
|
$sp794f3f = Account::create($this->request);
|
||||||
$sp794f3f->referral_code = Str::random(32);
|
$sp794f3f->referral_code = Str::random(32);
|
||||||
|
|
||||||
@ -58,5 +71,7 @@ class CreateAccount
|
|||||||
$spaa9f78->fresh();
|
$spaa9f78->fresh();
|
||||||
$sp035a66->notification(new NewAccountCreated($spaa9f78, $sp035a66))->ninja();
|
$sp035a66->notification(new NewAccountCreated($spaa9f78, $sp035a66))->ninja();
|
||||||
return $sp794f3f;
|
return $sp794f3f;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ class CreateCompanyToken implements ShouldQueue
|
|||||||
|
|
||||||
$ct = CompanyToken::create([
|
$ct = CompanyToken::create([
|
||||||
'user_id' => $this->user->id,
|
'user_id' => $this->user->id,
|
||||||
'account_id' => $this->company->account->id,
|
'account_id' => $this->user->account->id,
|
||||||
'token' => Str::random(64),
|
'token' => Str::random(64),
|
||||||
'name' => $this->custom_token_name ?: $this->user->first_name. ' '. $this->user->last_name,
|
'name' => $this->custom_token_name ?: $this->user->first_name. ' '. $this->user->last_name,
|
||||||
'company_id' => $this->company->id,
|
'company_id' => $this->company->id,
|
||||||
|
@ -46,8 +46,15 @@ class SendVerificationNotification implements ShouldQueue
|
|||||||
{
|
{
|
||||||
MultiDB::setDB($event->company->db);
|
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){
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,19 +137,20 @@ class SystemHealth
|
|||||||
Mail::to(config('mail.from.address'))
|
Mail::to(config('mail.from.address'))
|
||||||
->send(new TestMailServer('Email Server Works!', config('mail.from.address')));
|
->send(new TestMailServer('Email Server Works!', config('mail.from.address')));
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
\Log::error($e->getMessage());
|
||||||
return $e->getMessage();
|
return $e->getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count(Mail::failures()) > 0) {
|
if (count(Mail::failures()) > 0) {
|
||||||
|
\Log::error(print_r(Mail::failures(),1));
|
||||||
return Mail::failures();
|
return Mail::failures();
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return response()->json(['message'=>'Success'],200);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function checkEnvWritable()
|
private static function checkEnvWritable()
|
||||||
{
|
{
|
||||||
return is_writable(base_path().'/.env');
|
return is_writable(base_path().'/.env');
|
||||||
//return @fopen(base_path().'/.env', 'w');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user