diff --git a/app/Http/Controllers/HostedMigrationController.php b/app/Http/Controllers/HostedMigrationController.php new file mode 100644 index 000000000000..7415dca2395b --- /dev/null +++ b/app/Http/Controllers/HostedMigrationController.php @@ -0,0 +1,52 @@ +header('X-API-HOSTED-SECRET') != config('ninja.ninja_hosted_secret')) + return; + + if($user = MultiDB::hasUser(['email' => $request->input('email')])) + { + + if($user->account->owner() && $user->account->companies()->count() >= 1) + { + return response()->json(['token' => $user->account->companies->first()->tokens->first()->token] ,200); + } + + return response()->json(['error' => 'This user is not able to perform a migration. Please contact us at contact@invoiceninja.com to discuss.'], 401); + + } + + $account = CreateAccount::dispatchNow($request->all(), $request->getClientIp()); + + $company = $account->companies->first(); + + $company_token = CompanyToken::where('user_id', auth()->user()->id) + ->where('company_id', $company->id) + ->first(); + + return response()->json(['token' => $company_token->token], 200); + + } + +} \ No newline at end of file diff --git a/app/Http/Requests/Account/CreateAccountRequest.php b/app/Http/Requests/Account/CreateAccountRequest.php index d8c05b70e3e5..eb8f8724a2d0 100644 --- a/app/Http/Requests/Account/CreateAccountRequest.php +++ b/app/Http/Requests/Account/CreateAccountRequest.php @@ -46,7 +46,8 @@ class CreateAccountRequest extends Request } protected function prepareForValidation() - {nlog($this->all()); + { + $input = $this->all(); $input['user_agent'] = request()->server('HTTP_USER_AGENT'); diff --git a/app/Jobs/User/CreateUser.php b/app/Jobs/User/CreateUser.php index 0962eaf5d410..8b767762d56d 100644 --- a/app/Jobs/User/CreateUser.php +++ b/app/Jobs/User/CreateUser.php @@ -58,7 +58,7 @@ class CreateUser { $user = new User(); $user->account_id = $this->account->id; - $user->password = bcrypt($this->request['password']); + $user->password = $this->request['password'] ? bcrypt($this->request['password']) : ''; $user->accepted_terms_version = config('ninja.terms_version'); $user->confirmation_code = $this->createDbHash(config('database.default')); $user->fill($this->request); diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 43a0e525a5ac..111212195505 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -319,6 +319,12 @@ class Import implements ShouldQueue $account = $this->company->account; $account->fill($data); $account->save(); + + //Prevent hosted users being pushed into a trial + if(Ninja::isHosted() && $account->plan != ''){ + $account->trial_plan = ''; + $account->save(); + } } /** @@ -424,6 +430,9 @@ class Import implements ShouldQueue private function transformCompanyData(array $data): array { + nlog("pre transformed"); + nlog($data['settings']); + $company_settings = CompanySettings::defaults(); if (array_key_exists('settings', $data)) { @@ -445,6 +454,9 @@ class Import implements ShouldQueue $data['settings'] = $company_settings; } + + nlog("transformed Settings"); + nlog($data['settings']); return $data; } @@ -526,7 +538,7 @@ class Import implements ShouldQueue $user = $user_repository->save($modified, $this->fetchUser($resource['email']), true, true); $user->email_verified_at = now(); - $user->confirmation_code = ''; + // $user->confirmation_code = ''; if($modified['deleted_at']) $user->deleted_at = now(); @@ -560,6 +572,7 @@ class Import implements ShouldQueue $model_query = $model::where($column, $value) ->where('company_id', $this->company->id) + ->withTrashed() ->exists(); if($model_query) diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 75c3e314a86f..34aa257d3129 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -93,6 +93,7 @@ class Invoice extends BaseModel 'exchange_rate', 'subscription_id', 'auto_bill_enabled', + 'uses_inclusive_taxes', ]; protected $casts = [ diff --git a/routes/api.php b/routes/api.php index 18e97cf40517..ce068d9077cb 100644 --- a/routes/api.php +++ b/routes/api.php @@ -205,5 +205,6 @@ Route::match(['get', 'post'], 'payment_notification_webhook/{company_key}/{compa Route::post('api/v1/postmark_webhook', 'PostMarkController@webhook'); Route::get('token_hash_router', 'OneTimeTokenController@router'); Route::get('webcron', 'WebCronController@index'); +Route::post('api/v1/get_migration_account', 'HostedMigrationController@getAccount')->middleware('guest'); Route::fallback('BaseController@notFound');