mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 19:04:41 -04:00
Merge pull request #6988 from turbo124/master
Improve hosted forward url
This commit is contained in:
commit
2d243be4ae
@ -11,6 +11,8 @@ use App\Http\Requests\MigrationTypeRequest;
|
|||||||
use App\Jobs\HostedMigration;
|
use App\Jobs\HostedMigration;
|
||||||
use App\Libraries\Utils;
|
use App\Libraries\Utils;
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
|
use App\Models\AccountGatewayToken;
|
||||||
|
use App\Models\Client;
|
||||||
use App\Services\Migration\AuthService;
|
use App\Services\Migration\AuthService;
|
||||||
use App\Services\Migration\CompanyService;
|
use App\Services\Migration\CompanyService;
|
||||||
use App\Services\Migration\CompleteService;
|
use App\Services\Migration\CompleteService;
|
||||||
@ -19,6 +21,7 @@ use Illuminate\Http\Request;
|
|||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Validator;
|
use Validator;
|
||||||
|
use GuzzleHttp\RequestOptions;
|
||||||
|
|
||||||
class StepsController extends BaseController
|
class StepsController extends BaseController
|
||||||
{
|
{
|
||||||
@ -86,14 +89,6 @@ class StepsController extends BaseController
|
|||||||
url('/migration/companies?hosted=true')
|
url('/migration/companies?hosted=true')
|
||||||
);
|
);
|
||||||
|
|
||||||
//old
|
|
||||||
// return redirect(
|
|
||||||
// url('/migration/auth')
|
|
||||||
// );
|
|
||||||
|
|
||||||
// return redirect(
|
|
||||||
// url('/migration/endpoint')
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect(
|
return redirect(
|
||||||
@ -104,6 +99,9 @@ class StepsController extends BaseController
|
|||||||
public function forwardUrl(Request $request)
|
public function forwardUrl(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(Utils::isNinjaProd())
|
||||||
|
return $this->autoForwardUrl();
|
||||||
|
|
||||||
$rules = [
|
$rules = [
|
||||||
'url' => 'nullable|url',
|
'url' => 'nullable|url',
|
||||||
];
|
];
|
||||||
@ -131,6 +129,109 @@ class StepsController extends BaseController
|
|||||||
return back();
|
return back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function disableForwarding()
|
||||||
|
{
|
||||||
|
$account = \Auth::user()->account;
|
||||||
|
|
||||||
|
$account_settings = $account->account_email_settings;
|
||||||
|
$account_settings->forward_url_for_v5 = '';
|
||||||
|
$account_settings->is_disabled = false;
|
||||||
|
$account_settings->save();
|
||||||
|
|
||||||
|
return back();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function autoForwardUrl()
|
||||||
|
{
|
||||||
|
|
||||||
|
$url = 'https://invoicing.co/api/v1/confirm_forwarding';
|
||||||
|
// $url = 'http://devhosted.test:8000/api/v1/confirm_forwarding';
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'X-API-HOSTED-SECRET' => config('ninja.ninja_hosted_secret'),
|
||||||
|
'X-Requested-With' => 'XMLHttpRequest',
|
||||||
|
'Content-Type' => 'application/json',
|
||||||
|
];
|
||||||
|
|
||||||
|
$account = \Auth::user()->account;
|
||||||
|
$gateway_reference = '';
|
||||||
|
|
||||||
|
$ninja_client = Client::where('public_id', $account->id)->first();
|
||||||
|
|
||||||
|
if($ninja_client){
|
||||||
|
$agt = AccountGatewayToken::where('client_id', $ninja_client->id)->first();
|
||||||
|
|
||||||
|
if($agt)
|
||||||
|
$gateway_reference = $agt->token;
|
||||||
|
}
|
||||||
|
|
||||||
|
$body = [
|
||||||
|
'account_key' => $account->account_key,
|
||||||
|
'email' => \Auth::user()->email,
|
||||||
|
'plan' => $account->company->plan,
|
||||||
|
'plan_term' =>$account->company->plan_term,
|
||||||
|
'plan_started' =>$account->company->plan_started,
|
||||||
|
'plan_paid' =>$account->company->plan_paid,
|
||||||
|
'plan_expires' =>$account->company->plan_expires,
|
||||||
|
'trial_started' =>$account->company->trial_started,
|
||||||
|
'trial_plan' =>$account->company->trial_plan,
|
||||||
|
'plan_price' =>$account->company->plan_price,
|
||||||
|
'num_users' =>$account->company->num_users,
|
||||||
|
'gateway_reference' => $gateway_reference,
|
||||||
|
];
|
||||||
|
|
||||||
|
$client = new \GuzzleHttp\Client([
|
||||||
|
'headers' => $headers,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = $client->post($url,[
|
||||||
|
RequestOptions::JSON => $body,
|
||||||
|
RequestOptions::ALLOW_REDIRECTS => false
|
||||||
|
]);
|
||||||
|
|
||||||
|
if($response->getStatusCode() == 401){
|
||||||
|
info("autoForwardUrl");
|
||||||
|
info($response->getBody());
|
||||||
|
|
||||||
|
} elseif ($response->getStatusCode() == 200) {
|
||||||
|
|
||||||
|
$message_body = json_decode($response->getBody(), true);
|
||||||
|
|
||||||
|
$forwarding_url = $message_body['forward_url'];
|
||||||
|
|
||||||
|
$account_settings = $account->account_email_settings;
|
||||||
|
|
||||||
|
if(strlen($forwarding_url) == 0) {
|
||||||
|
$account_settings->is_disabled = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$account_settings->is_disabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$account_settings->forward_url_for_v5 = rtrim($forwarding_url,'/');
|
||||||
|
$account_settings->save();
|
||||||
|
|
||||||
|
$billing_transferred = $message_body['billing_transferred'];
|
||||||
|
|
||||||
|
if($billing_transferred == 'true'){
|
||||||
|
|
||||||
|
$company = $account->company;
|
||||||
|
$company->plan = null;
|
||||||
|
$company->plan_expires = null;
|
||||||
|
$company->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
info("failed to autoforward");
|
||||||
|
info(json_decode($response->getBody()->getContents()));
|
||||||
|
// dd('else');
|
||||||
|
}
|
||||||
|
|
||||||
|
return back();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public function endpoint()
|
public function endpoint()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -239,7 +340,6 @@ class StepsController extends BaseController
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$migrationData = $this->generateMigrationData($request->all());
|
$migrationData = $this->generateMigrationData($request->all());
|
||||||
|
|
||||||
|
|
||||||
$completeService->data($migrationData)
|
$completeService->data($migrationData)
|
||||||
->endpoint(session('MIGRATION_ENDPOINT'))
|
->endpoint(session('MIGRATION_ENDPOINT'))
|
||||||
@ -340,8 +440,6 @@ class StepsController extends BaseController
|
|||||||
Storage::makeDirectory('migrations');
|
Storage::makeDirectory('migrations');
|
||||||
$file = Storage::path("migrations/{$fileName}.zip");
|
$file = Storage::path("migrations/{$fileName}.zip");
|
||||||
|
|
||||||
//$file = storage_path("migrations/{$fileName}.zip");
|
|
||||||
|
|
||||||
ksort($localMigrationData);
|
ksort($localMigrationData);
|
||||||
|
|
||||||
$zip = new \ZipArchive();
|
$zip = new \ZipArchive();
|
||||||
|
@ -54,15 +54,15 @@ class HostedMigration extends Job
|
|||||||
|
|
||||||
$completeService->data($migrationData)
|
$completeService->data($migrationData)
|
||||||
->endpoint('https://v5-app1.invoicing.co')
|
->endpoint('https://v5-app1.invoicing.co')
|
||||||
// ->endpoint('http://ninja.test:8000')
|
// ->endpoint('http://devhosted.test:8000')
|
||||||
->start();
|
->start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getToken()
|
private function getToken()
|
||||||
{
|
{
|
||||||
$url = 'https://invoicing.co/api/v1/get_migration_account';
|
//$url = 'https://invoicing.co/api/v1/get_migration_account';
|
||||||
// $url = 'http://ninja.test:8000/api/v1/get_migration_account';
|
$url = 'http://devhosted.test:8000/api/v1/get_migration_account';
|
||||||
|
|
||||||
$headers = [
|
$headers = [
|
||||||
'X-API-HOSTED-SECRET' => $this->v4_secret,
|
'X-API-HOSTED-SECRET' => $this->v4_secret,
|
||||||
@ -98,27 +98,10 @@ class HostedMigration extends Job
|
|||||||
$this->migration_token = $message_body['token'];
|
$this->migration_token = $message_body['token'];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
info(json_decode($response->getBody()->getContents()));
|
// info(json_decode($response->getBody()->getContents()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// $body = \Unirest\Request\Body::json($body);
|
|
||||||
|
|
||||||
// $response = Request::post($url, $headers, $body);
|
|
||||||
|
|
||||||
// if (in_array($response->code, [200])) {
|
|
||||||
|
|
||||||
// $data = $response->body;
|
|
||||||
// info(print_r($data,1));
|
|
||||||
// $this->migration_token = $data->token;
|
|
||||||
|
|
||||||
// } else {
|
|
||||||
// info("getting token failed");
|
|
||||||
// info($response->raw_body);
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,12 +75,11 @@ class CompleteService
|
|||||||
'headers' => $this->getHeaders(),
|
'headers' => $this->getHeaders(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
$payload_data = [
|
$payload_data = [
|
||||||
'multipart'=> array_merge($files, $payload),
|
'multipart'=> array_merge($files, $payload),
|
||||||
];
|
];
|
||||||
|
|
||||||
info(print_r($payload_data,1));
|
// info(print_r($payload_data,1));
|
||||||
$response = $client->request("POST", $this->getUrl(),$payload_data);
|
$response = $client->request("POST", $this->getUrl(),$payload_data);
|
||||||
|
|
||||||
if($response->getStatusCode() == 200){
|
if($response->getStatusCode() == 200){
|
||||||
@ -88,7 +87,7 @@ class CompleteService
|
|||||||
$this->isSuccessful = true;
|
$this->isSuccessful = true;
|
||||||
return json_decode($response->getBody(),true);
|
return json_decode($response->getBody(),true);
|
||||||
}else {
|
}else {
|
||||||
info($response->raw_body);
|
// info($response->raw_body);
|
||||||
|
|
||||||
$this->isSuccessful = false;
|
$this->isSuccessful = false;
|
||||||
$this->errors = [
|
$this->errors = [
|
||||||
@ -98,25 +97,6 @@ class CompleteService
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// $body = \Unirest\Request\Body::multipart(['companies' => json_encode($data)], $files);
|
|
||||||
|
|
||||||
// $response = Request::post($this->getUrl(), $this->getHeaders(), $body);
|
|
||||||
|
|
||||||
// if (in_array($response->code, [200])) {
|
|
||||||
// $this->isSuccessful = true;
|
|
||||||
// } else {
|
|
||||||
// info($response->raw_body);
|
|
||||||
|
|
||||||
// $this->isSuccessful = false;
|
|
||||||
// $this->errors = [
|
|
||||||
// 'Oops, something went wrong. Migration can\'t be processed at the moment. Please checks the logs.',
|
|
||||||
// ];
|
|
||||||
// }
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isSuccessful()
|
public function isSuccessful()
|
||||||
|
@ -1543,7 +1543,7 @@ trait GenerateMigrationResources
|
|||||||
}
|
}
|
||||||
catch(\Exception $e){
|
catch(\Exception $e){
|
||||||
|
|
||||||
info($config);
|
// info($config);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,15 +277,13 @@
|
|||||||
<label for="modules" class="control-label col-lg-4 col-sm-4"></label>
|
<label for="modules" class="control-label col-lg-4 col-sm-4"></label>
|
||||||
<div class="col-lg-8 col-sm-8">
|
<div class="col-lg-8 col-sm-8">
|
||||||
<div class="help-block">
|
<div class="help-block">
|
||||||
Once you are ready to forward your customers, enter your client portal URL for V5 here:<br/><br/>
|
</div>
|
||||||
<b>Please note once enabled. Your V4 account will become disabled. This means that your recurring invoices and any reminders will no longer fire from V4.</b> <br/><br/>To renable your V4 installation simply set the forwarding url to a blank/empty value.
|
|
||||||
</div><br/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="url" class="control-label col-lg-4 col-sm-4 text-right">{!! trans('texts.url') !!}</label>
|
<label for="url" class="control-label col-lg-4 col-sm-4 text-right">{!! trans('texts.url') !!}</label>
|
||||||
<div class="col-lg-8 col-sm-8">
|
<div class="col-lg-8 col-sm-8">
|
||||||
<input type="text" name="url" placeholder="https://subdomain.invoicing.co" class="form form-control" value="{{ $account->account_email_settings->forward_url_for_v5}}">
|
<input type="text" name="url" placeholder="https://subdomain.invoicing.co" class="form form-control" value="{{ $account->account_email_settings->forward_url_for_v5}}" @if(Utils::isNinjaProd())disabled @endif>
|
||||||
@if($errors->has('url'))
|
@if($errors->has('url'))
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
@foreach ($errors->get('url') as $message)
|
@foreach ($errors->get('url') as $message)
|
||||||
@ -301,6 +299,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<div class="col-lg-8 col-sm-8 col-lg-offset-4 col-sm-offset-4">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<span class="help-block">
|
||||||
|
<br>
|
||||||
|
If you need to rollback to v4, please disable forwarding using this link.
|
||||||
|
<a class="button" href="/migration/disable_forward">Disable Forwarding</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -160,6 +160,7 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () {
|
|||||||
Route::post('migration/companies', 'Migration\StepsController@handleCompanies');
|
Route::post('migration/companies', 'Migration\StepsController@handleCompanies');
|
||||||
Route::get('migration/completed', 'Migration\StepsController@completed');
|
Route::get('migration/completed', 'Migration\StepsController@completed');
|
||||||
Route::post('migration/forward', 'Migration\StepsController@forwardUrl');
|
Route::post('migration/forward', 'Migration\StepsController@forwardUrl');
|
||||||
|
Route::get('migration/disable_forward', 'Migration\StepsController@disableForwarding');
|
||||||
|
|
||||||
Route::get('migration/import', 'Migration\StepsController@import');
|
Route::get('migration/import', 'Migration\StepsController@import');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user