Merge pull request #10057 from beganovich/INV2-1544

GoCardless OAuth2: MultiDB
This commit is contained in:
David Bomba 2024-10-01 19:15:18 +10:00 committed by GitHub
commit c327b9acf5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 6 deletions

View File

@ -78,6 +78,8 @@ class GoCardlessOAuthController extends Controller
return view('auth.gocardless_connect.access_denied'); return view('auth.gocardless_connect.access_denied');
} }
$response = $response->json();
$company_gateway = CompanyGateway::query() $company_gateway = CompanyGateway::query()
->where('gateway_key', 'b9886f9257f0c6ee7c302f1c74475f6c') ->where('gateway_key', 'b9886f9257f0c6ee7c302f1c74475f6c')
->where('company_id', $company->id) ->where('company_id', $company->id)
@ -92,8 +94,6 @@ class GoCardlessOAuthController extends Controller
$company_gateway->setConfig([]); $company_gateway->setConfig([]);
} }
$response = $response->json();
$payload = [ $payload = [
'__current' => $company_gateway->getConfig(), '__current' => $company_gateway->getConfig(),
'account_id' => $response['organisation_id'], 'account_id' => $response['organisation_id'],
@ -105,6 +105,11 @@ class GoCardlessOAuthController extends Controller
'oauth2' => true, 'oauth2' => true,
]; ];
$settings = new \stdClass();
$settings->organisation_id = $response['organisation_id'];
$company_gateway->setSettings($settings);
$company_gateway->setConfig($payload); $company_gateway->setConfig($payload);
$company_gateway->save(); $company_gateway->save();

View File

@ -14,6 +14,7 @@ namespace App\Http\Controllers\Gateways;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\GoCardless\WebhookRequest; use App\Http\Requests\GoCardless\WebhookRequest;
use App\Libraries\MultiDB;
use App\Models\CompanyGateway; use App\Models\CompanyGateway;
use App\Repositories\CompanyRepository; use App\Repositories\CompanyRepository;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
@ -33,14 +34,34 @@ class GoCardlessOAuthWebhookController extends Controller
$e = Arr::dot($event); $e = Arr::dot($event);
if ($event['action'] === 'disconnected') { if ($event['action'] === 'disconnected') {
/** @var \App\Models\CompanyGateway $company_gateway */ /** @var \App\Models\CompanyGateway $company_gateway */
$company_gateway = CompanyGateway::query() $company_gateway = null;
->whereJsonContains('config->account_id', $e['links.organisation'])
->firstOrFail(); foreach (MultiDB::$dbs as $db) {
if (
/** @var \App\Models\CompanyGateway $company_gateway */
$cg = CompanyGateway::on($db)
->where('settings->organisation_id', $e['links.organisation'])
->first()
) {
$company_gateway = $cg;
break;
}
}
if ($company_gateway === null) {
return abort(404);
}
$current = $company_gateway->getConfig('__current'); $current = $company_gateway->getConfig('__current');
$settings = $company_gateway->settings;
$settings->organisation_id = null;
$company_gateway->setSettings($settings);
if ($current) { if ($current) {
$company_gateway->setConfig($current); $company_gateway->setConfig($current);
$company_gateway->save(); $company_gateway->save();
@ -49,5 +70,7 @@ class GoCardlessOAuthWebhookController extends Controller
$this->company_repository->archive($company_gateway); $this->company_repository->archive($company_gateway);
} }
} }
return response()->noContent();
} }
} }