From b0c6a4d5ddfd35ac1ed48322bac56d2d0318e965 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 19 Nov 2021 20:37:28 +1100 Subject: [PATCH 1/8] Calculate has_password --- app/Transformers/UserTransformer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index d44994006419..238db3a08a2e 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -60,7 +60,7 @@ class UserTransformer extends EntityTransformer 'oauth_provider_id' => (string) $user->oauth_provider_id, 'last_confirmed_email_address' => (string) $user->last_confirmed_email_address ?: '', 'google_2fa_secret' => (bool) $user->google_2fa_secret, - 'has_password' => (bool) $user->has_password, + 'has_password' => (bool) empty($user->password) ? false : true, 'oauth_user_token' => empty($user->oauth_user_token) ? '' : '***', ]; } From ca788476d8d4949ad643814d23911a2b9db1f1d7 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 20 Nov 2021 11:34:43 +1100 Subject: [PATCH 2/8] Add filter controller --- app/Http/Controllers/FilterController.php | 67 ++++++++++++++++++ routes/api.php | 2 + tests/Feature/FilterApiTest.php | 83 +++++++++++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 app/Http/Controllers/FilterController.php create mode 100644 tests/Feature/FilterApiTest.php diff --git a/app/Http/Controllers/FilterController.php b/app/Http/Controllers/FilterController.php new file mode 100644 index 000000000000..31e4e54bd455 --- /dev/null +++ b/app/Http/Controllers/FilterController.php @@ -0,0 +1,67 @@ +json( array_merge($this->base_filters, $entity_filters), 200); + } + + +} diff --git a/routes/api.php b/routes/api.php index 6dd956d0b5a6..73eb067da196 100644 --- a/routes/api.php +++ b/routes/api.php @@ -38,6 +38,8 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::put('clients/{client}/upload', 'ClientController@upload')->name('clients.upload'); Route::post('clients/bulk', 'ClientController@bulk')->name('clients.bulk'); + Route::post('filters/{entity}', 'FilterController@index')->name('filters'); + Route::resource('client_gateway_tokens', 'ClientGatewayTokenController'); Route::post('connected_account', 'ConnectedAccountController@index'); diff --git a/tests/Feature/FilterApiTest.php b/tests/Feature/FilterApiTest.php new file mode 100644 index 000000000000..2b18c9c57f4f --- /dev/null +++ b/tests/Feature/FilterApiTest.php @@ -0,0 +1,83 @@ +makeTestData(); + + + $this->withoutMiddleware( + ThrottleRequests::class + ); + } + + public function testActivityGet() + { + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/filters/invoice'); + + $response->assertStatus(200); + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/filters/quote'); + + $response->assertStatus(200); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/filters/credit'); + + $response->assertStatus(200); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/filters/payment'); + + $response->assertStatus(200); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $this->token, + ])->post('/api/v1/filters/recurring_invoice'); + + $response->assertStatus(200); + + + + } +} From ce3ea99f22daff7b3760018d76b7f0620cf2b07a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 08:18:03 +1100 Subject: [PATCH 3/8] Remove daily check data --- app/Console/Kernel.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index b82ae84f16a4..caf7f5a58c61 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -52,8 +52,6 @@ class Kernel extends ConsoleKernel $schedule->job(new DiskCleanup)->daily()->withoutOverlapping(); - $schedule->command('ninja:check-data --database=db-ninja-01')->daily()->withoutOverlapping(); - $schedule->job(new ReminderJob)->hourly()->withoutOverlapping(); $schedule->job(new CompanySizeCheck)->daily()->withoutOverlapping(); @@ -84,7 +82,8 @@ class Kernel extends ConsoleKernel $schedule->job(new AdjustEmailQuota)->dailyAt('23:00')->withoutOverlapping(); $schedule->job(new SendFailedEmails)->daily()->withoutOverlapping(); - $schedule->command('ninja:check-data --database=db-ninja-02')->dailyAt('00:15')->withoutOverlapping(); + $schedule->command('ninja:check-data --database=db-ninja-01')->daily()->withoutOverlapping(); + $schedule->command('ninja:check-data --database=db-ninja-02')->dailyAt('00:05')->withoutOverlapping(); $schedule->command('ninja:s3-cleanup')->dailyAt('23:15')->withoutOverlapping(); } From 3695042cc0e053201197d63a92ebca0258e51a2d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 10:13:10 +1100 Subject: [PATCH 4/8] Fixes for failed mollie payments --- app/PaymentDrivers/MolliePaymentDriver.php | 34 ++++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/app/PaymentDrivers/MolliePaymentDriver.php b/app/PaymentDrivers/MolliePaymentDriver.php index 4b991a057a86..5064ddbb22b1 100644 --- a/app/PaymentDrivers/MolliePaymentDriver.php +++ b/app/PaymentDrivers/MolliePaymentDriver.php @@ -16,6 +16,7 @@ use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest; use App\Http\Requests\Gateways\Mollie\Mollie3dsRequest; use App\Http\Requests\Payments\PaymentWebhookRequest; use App\Jobs\Util\SystemLogger; +use App\Models\Client; use App\Models\ClientGatewayToken; use App\Models\GatewayType; use App\Models\Invoice; @@ -303,12 +304,39 @@ class MolliePaymentDriver extends BaseDriver try { $payment = $this->gateway->payments->get($request->id); + $record = Payment::withTrashed()->where('transaction_reference', $request->id)->first(); - $record = Payment::withTrashed()->where('transaction_reference', $request->id)->firstOrFail(); - $record->status_id = $codes[$payment->status]; - $record->save(); + if($record){ + $client = $record->client; + } + else{ + $input = $request->all(); + $client = Client::withTrashed()->find($this->decodePrimaryKey($input['metadata']->client_id)); + } + + $message = [ + 'server_response' => $payment, + 'data' => $request->all(), + ]; + + $response = SystemLog::EVENT_GATEWAY_FAILURE; + + if($record){ + $record->status_id = $codes[$payment->status]; + $record->save(); + $response = SystemLog::EVENT_GATEWAY_SUCCESS; + } + + SystemLogger::dispatch( + $message, + SystemLog::CATEGORY_GATEWAY_RESPONSE, + $response, + SystemLog::TYPE_MOLLIE, + $client + ); return response()->json([], 200); + } catch (ApiException $e) { return response()->json(['message' => $e->getMessage(), 'gatewayStatusCode' => $e->getCode()], 500); } From 3274309df479bed415c63116bdb66c6c0241ff11 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 10:19:27 +1100 Subject: [PATCH 5/8] Fixes for Mollie webhooks --- app/PaymentDrivers/MolliePaymentDriver.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/PaymentDrivers/MolliePaymentDriver.php b/app/PaymentDrivers/MolliePaymentDriver.php index 5064ddbb22b1..36c2d7338185 100644 --- a/app/PaymentDrivers/MolliePaymentDriver.php +++ b/app/PaymentDrivers/MolliePaymentDriver.php @@ -310,8 +310,7 @@ class MolliePaymentDriver extends BaseDriver $client = $record->client; } else{ - $input = $request->all(); - $client = Client::withTrashed()->find($this->decodePrimaryKey($input['metadata']->client_id)); + $client = Client::withTrashed()->find($this->decodePrimaryKey($request->metadata->client_id)); } $message = [ From 4b39c23282f09b159279f3edfff0275f21373e77 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 10:33:12 +1100 Subject: [PATCH 6/8] Fixes for Mollie webhooks --- app/PaymentDrivers/MolliePaymentDriver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/PaymentDrivers/MolliePaymentDriver.php b/app/PaymentDrivers/MolliePaymentDriver.php index 36c2d7338185..1aac3ee606ca 100644 --- a/app/PaymentDrivers/MolliePaymentDriver.php +++ b/app/PaymentDrivers/MolliePaymentDriver.php @@ -310,7 +310,7 @@ class MolliePaymentDriver extends BaseDriver $client = $record->client; } else{ - $client = Client::withTrashed()->find($this->decodePrimaryKey($request->metadata->client_id)); + $client = Client::withTrashed()->find($this->decodePrimaryKey($payment['metadata']->client_id)); } $message = [ From 534a420b576309ecbf683c8651bce09565a702d6 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 12:57:27 +1100 Subject: [PATCH 7/8] Fixes for hosted migration --- .../Controllers/HostedMigrationController.php | 27 ++++--------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/HostedMigrationController.php b/app/Http/Controllers/HostedMigrationController.php index 5f93b63c614f..90a5784e88ca 100644 --- a/app/Http/Controllers/HostedMigrationController.php +++ b/app/Http/Controllers/HostedMigrationController.php @@ -59,33 +59,16 @@ class HostedMigrationController extends Controller return; $input = $request->all(); - +nlog($input); MultiDB::findAndSetDbByCompanyKey($input['account_key']); $company = Company::with('account')->where('company_key', $input['account_key'])->first(); - $account = $company->account; - $client_id = false; - - if($contact = ClientContact::on('db-ninja-01')->where(['email' => $input['email'], 'company_id' => config('ninja.ninja_default_company_id')])->first()){ - $client_id = $contact->client_id; - } - else if($client = Client::on('db-ninja-01')->where(['custom_value2' => $account->key, 'company_id' => config('ninja.ninja_default_company_id')])->first()){ - $client_id = $client->id; - } - - //get ninja client_id; - - if(strlen($input['gateway_reference']) >1 && $client_id){ - - Artisan::call('ninja:add-token', [ - '--customer' => $input['gateway_reference'], '--client_id' => 1 - ]); - - } $forward_url = $company->domain(); - - return response()->json(['forward_url' => $forward_url], 200); + + $billing_transferred = \Modules\Admin\Jobs\Account\TransferAccountPlan::dispatchNow($input); + + return response()->json(['forward_url' => $forward_url, 'billing_transferred' => $billing_transferred], 200); } } \ No newline at end of file From 96f90f12a11bca411a92d28f334029d60b2fed5f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 21 Nov 2021 13:49:52 +1100 Subject: [PATCH 8/8] Minor fixes --- app/Http/Controllers/HostedMigrationController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/HostedMigrationController.php b/app/Http/Controllers/HostedMigrationController.php index 90a5784e88ca..e61f026d980d 100644 --- a/app/Http/Controllers/HostedMigrationController.php +++ b/app/Http/Controllers/HostedMigrationController.php @@ -59,7 +59,7 @@ class HostedMigrationController extends Controller return; $input = $request->all(); -nlog($input); + MultiDB::findAndSetDbByCompanyKey($input['account_key']); $company = Company::with('account')->where('company_key', $input['account_key'])->first();