From 758e6d92f012a960e214d7f729e6e753e4a52b8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 30 Sep 2024 17:31:51 +0200 Subject: [PATCH 1/3] store organisation_id as part of settings --- .../Controllers/Gateways/GoCardlessOAuthController.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Gateways/GoCardlessOAuthController.php b/app/Http/Controllers/Gateways/GoCardlessOAuthController.php index 02081b610eb1..183fc1b328f3 100644 --- a/app/Http/Controllers/Gateways/GoCardlessOAuthController.php +++ b/app/Http/Controllers/Gateways/GoCardlessOAuthController.php @@ -77,6 +77,8 @@ class GoCardlessOAuthController extends Controller if ($response->failed()) { return view('auth.gocardless_connect.access_denied'); } + + $response = $response->json(); $company_gateway = CompanyGateway::query() ->where('gateway_key', 'b9886f9257f0c6ee7c302f1c74475f6c') @@ -92,8 +94,6 @@ class GoCardlessOAuthController extends Controller $company_gateway->setConfig([]); } - $response = $response->json(); - $payload = [ '__current' => $company_gateway->getConfig(), 'account_id' => $response['organisation_id'], @@ -105,6 +105,11 @@ class GoCardlessOAuthController extends Controller 'oauth2' => true, ]; + $settings = new \stdClass(); + $settings->organisation_id = $response['organisation_id']; + + $company_gateway->setSettings($settings); + $company_gateway->setConfig($payload); $company_gateway->save(); From 4146464142f68d5f797024d5cfd266a6696c26c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 30 Sep 2024 17:32:08 +0200 Subject: [PATCH 2/3] loop and find gateway on all connections --- .../GoCardlessOAuthWebhookController.php | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php b/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php index 0d91a288225f..c1f0a4ed1cc5 100644 --- a/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php +++ b/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Gateways; use App\Http\Controllers\Controller; use App\Http\Requests\GoCardless\WebhookRequest; +use App\Libraries\MultiDB; use App\Models\CompanyGateway; use App\Repositories\CompanyRepository; use Illuminate\Support\Arr; @@ -33,14 +34,34 @@ class GoCardlessOAuthWebhookController extends Controller $e = Arr::dot($event); if ($event['action'] === 'disconnected') { - /** @var \App\Models\CompanyGateway $company_gateway */ - $company_gateway = CompanyGateway::query() - ->whereJsonContains('config->account_id', $e['links.organisation']) - ->firstOrFail(); + $company_gateway = null; + + foreach (MultiDB::$dbs as $db) { + if ( + /** @var \App\Models\CompanyGateway $company_gateway */ + $cg = CompanyGateway::on($db) + ->where('settings->organisation_id', $e['links.organisation']) + ->exists() + ) { + $company_gateway = $cg; + + break; + } + } + + if ($company_gateway === null) { + return abort(404); + } $current = $company_gateway->getConfig('__current'); + $settings = $company_gateway->settings; + + $settings->organisation_id = null; + + $company_gateway->setSettings($settings); + if ($current) { $company_gateway->setConfig($current); $company_gateway->save(); @@ -49,5 +70,7 @@ class GoCardlessOAuthWebhookController extends Controller $this->company_repository->archive($company_gateway); } } + + return response()->noContent(); } } From 2a4ad19ed2153d0c5d7fca9c657093175703cb72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 1 Oct 2024 11:10:44 +0200 Subject: [PATCH 3/3] update controller --- .../Controllers/Gateways/GoCardlessOAuthWebhookController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php b/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php index c1f0a4ed1cc5..d71467514d5c 100644 --- a/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php +++ b/app/Http/Controllers/Gateways/GoCardlessOAuthWebhookController.php @@ -42,7 +42,7 @@ class GoCardlessOAuthWebhookController extends Controller /** @var \App\Models\CompanyGateway $company_gateway */ $cg = CompanyGateway::on($db) ->where('settings->organisation_id', $e['links.organisation']) - ->exists() + ->first() ) { $company_gateway = $cg;