From 013ce5e6e421d06e765f33aaeb94a4582661f6b4 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 24 Jul 2022 17:38:24 +1000 Subject: [PATCH 1/8] Add logging for stripe intents --- .../Stripe/Jobs/PaymentIntentWebhook.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php index d94b4ec296ae..f37f46f5a7b3 100644 --- a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php +++ b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php @@ -148,6 +148,17 @@ class PaymentIntentWebhook implements ShouldQueue } + + SystemLogger::dispatch( + ['response' => $this->stripe_request, 'data' => []], + SystemLog::CATEGORY_GATEWAY_RESPONSE, + SystemLog::EVENT_GATEWAY_SUCCESS, + SystemLog::TYPE_STRIPE, + null, + $company, + ); + + } private function updateCreditCardPayment($payment_hash, $client) From 65e9e604c0b8025cddc955e227074253dedd855e Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 24 Jul 2022 17:44:40 +1000 Subject: [PATCH 2/8] Fixes for mailer --- app/Jobs/Mail/NinjaMailerJob.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index b70664607919..245924ee94f9 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -330,8 +330,14 @@ class NinjaMailerJob implements ShouldQueue return true; /* If the account is verified, we allow emails to flow */ - if(Ninja::isHosted() && $this->company->account && $this->company->account->is_verified_account) + if(Ninja::isHosted() && $this->company->account && $this->company->account->is_verified_account) { + + /* Continue to analyse verified accounts in case they later start sending poor quality emails*/ + if(class_exists(\Modules\Admin\Jobs\Account\EmailQuality::class)) + (new \Modules\Admin\Jobs\Account\EmailQuality($this->nmo, $this->company))->run(); + return false; + } /* Ensure the user has a valid email address */ if(!str_contains($this->nmo->to_user->email, "@")) From ba133360a26e894aeed9832b4c54c08189561f26 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 08:00:52 +1000 Subject: [PATCH 3/8] Silence errors from file_get_contents --- app/Jobs/Util/VersionCheck.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Jobs/Util/VersionCheck.php b/app/Jobs/Util/VersionCheck.php index 71195bd1caeb..022fa7374724 100644 --- a/app/Jobs/Util/VersionCheck.php +++ b/app/Jobs/Util/VersionCheck.php @@ -35,7 +35,7 @@ class VersionCheck implements ShouldQueue */ public function handle() { - $version_file = trim(file_get_contents(config('ninja.version_url'))); + $version_file = trim(@file_get_contents(config('ninja.version_url'))); nlog("latest version = {$version_file}"); From 802490a7ee9116a4e77e2e505fd8ee020e9c6db9 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 09:01:15 +1000 Subject: [PATCH 4/8] Refactor for logos in dockerfile --- app/Jobs/Util/UploadAvatar.php | 3 --- app/Models/Presenters/CompanyPresenter.php | 20 +++++++++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/Jobs/Util/UploadAvatar.php b/app/Jobs/Util/UploadAvatar.php index 48d7bfe5a459..9d7b8c2464cc 100644 --- a/app/Jobs/Util/UploadAvatar.php +++ b/app/Jobs/Util/UploadAvatar.php @@ -44,9 +44,6 @@ class UploadAvatar implements ShouldQueue $path = Storage::putFile($this->directory, new File(sys_get_temp_dir().'/'.$tmp_file)); - // info($path); - // info($tmp_file); - $url = Storage::url($path); //return file path diff --git a/app/Models/Presenters/CompanyPresenter.php b/app/Models/Presenters/CompanyPresenter.php index 8106844991d0..9ed69a506926 100644 --- a/app/Models/Presenters/CompanyPresenter.php +++ b/app/Models/Presenters/CompanyPresenter.php @@ -46,6 +46,24 @@ class CompanyPresenter extends EntityPresenter } + public function logoDocker($settings = null) + { + + if (! $settings) { + $settings = $this->entity->settings; + } + + $basename = basename($this->settings->company_logo); + + $logo = Storage::get("{$this->company_key}/{$basename}"); + + if(!$logo) + return $this->logo($settings); + + return "data:image/png;base64, ". base64_encode($logo); + + } + /** * Test for using base64 encoding */ @@ -56,7 +74,7 @@ class CompanyPresenter extends EntityPresenter } if(config('ninja.is_docker') || config('ninja.local_download')) - return $this->logo($settings); + return $this->logoDocker($settings); $context_options =array( "ssl"=>array( From 375b66342561b59d8752c7e58b1187ec56aa9ea1 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 09:44:57 +1000 Subject: [PATCH 5/8] changes for aliases --- app/Utils/HtmlEngine.php | 5 +++-- resources/lang/en/texts.php | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 234ce76eb929..8693ae1c96da 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -540,8 +540,9 @@ class HtmlEngine /*Payment Aliases*/ $data['$paymentLink'] = &$data['$payment_link']; $data['$payment_url'] = &$data['$payment_link']; - $data['$portalButton'] = &$data['$paymentLink']; - + $data['$portalButton'] = &$data['$payment_link']; + $data['$portal_button'] = &$data['$payment_link']; + $data['$dir'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'rtl' : 'ltr', 'label' => '']; $data['$dir_text_align'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'right' : 'left', 'label' => '']; diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index fd83b2529a2e..7fe2840695bb 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -4728,6 +4728,7 @@ $LANG = array( 'received' => 'Received', 'converted_to_expense' => 'Successfully converted to expense', 'converted_to_expenses' => 'Successfully converted to expenses', + 'entity_removed' => 'This document has been removed, please contact the vendor for further information', ); return $LANG; From 80ad607e6276fb071eb0c605062b9ace9dc0b06c Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 10:47:18 +1000 Subject: [PATCH 6/8] Replace 404 with not available screen for deleted entities --- .../ClientPortal/InvitationController.php | 11 ++++--- app/Models/Presenters/CompanyPresenter.php | 1 + resources/lang/en/texts.php | 1 + .../ninja2020/generic/not_available.blade.php | 31 +++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 resources/views/portal/ninja2020/generic/not_available.blade.php diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index 26c3f671c4d9..ab353600c698 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -81,15 +81,16 @@ class InvitationController extends Controller $entity_obj = 'App\Models\\'.ucfirst(Str::camel($entity)).'Invitation'; $invitation = $entity_obj::withTrashed() + ->with($entity) ->where('key', $invitation_key) - ->whereHas($entity, function ($query) { - $query->where('is_deleted',0); - }) + // ->whereHas($entity, function ($query) { + // $query->where('is_deleted',0); + // }) ->with('contact.client') ->first(); - if(!$invitation) - return abort(404,'The resource is no longer available.'); + if($invitation->{$entity}->is_deleted) + return $this->render('generic.not_available', ['account' => $invitation->company->account, 'company' => $invitation->company]); /* 12/01/2022 Clean up an edge case where if the contact is trashed, restore if a invitation comes back. */ if($invitation->contact->trashed()) diff --git a/app/Models/Presenters/CompanyPresenter.php b/app/Models/Presenters/CompanyPresenter.php index 9ed69a506926..212e6614d531 100644 --- a/app/Models/Presenters/CompanyPresenter.php +++ b/app/Models/Presenters/CompanyPresenter.php @@ -13,6 +13,7 @@ namespace App\Models\Presenters; use App\Models\Country; use Illuminate\Support\Str; +use Illuminate\Support\Facades\Storage; /** * Class CompanyPresenter. diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 7fe2840695bb..0a6fa29897b3 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -4729,6 +4729,7 @@ $LANG = array( 'converted_to_expense' => 'Successfully converted to expense', 'converted_to_expenses' => 'Successfully converted to expenses', 'entity_removed' => 'This document has been removed, please contact the vendor for further information', + 'entity_removed_title' => 'Document no longer available', ); return $LANG; diff --git a/resources/views/portal/ninja2020/generic/not_available.blade.php b/resources/views/portal/ninja2020/generic/not_available.blade.php new file mode 100644 index 000000000000..1deda7c06152 --- /dev/null +++ b/resources/views/portal/ninja2020/generic/not_available.blade.php @@ -0,0 +1,31 @@ +@extends('portal.ninja2020.layout.clean') +@section('meta_title', ctrans('texts.error')) + +@section('body') + +
+
+
+ + @if($account && !$account->isPaid()) +
+ Invoice Ninja logo +
+ @elseif(isset($company) && !is_null($company)) +
+ {{ $company->present()->name() }} logo +
+ @endif +

{{ ctrans("texts.entity_removed_title") }}

+

{{ ctrans('texts.entity_removed') }}

+
+
+
+ +@stop + +@push('footer') + +@endpush From d7d99f457a4d5f5127dd0aafb5b077e3f6264ce9 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 10:51:22 +1000 Subject: [PATCH 7/8] Clean up for variables --- app/Utils/HtmlEngine.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 8693ae1c96da..b39d93509259 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -541,7 +541,6 @@ class HtmlEngine $data['$paymentLink'] = &$data['$payment_link']; $data['$payment_url'] = &$data['$payment_link']; $data['$portalButton'] = &$data['$payment_link']; - $data['$portal_button'] = &$data['$payment_link']; $data['$dir'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'rtl' : 'ltr', 'label' => '']; $data['$dir_text_align'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'right' : 'left', 'label' => '']; From 3b66b9acdf60504ed6d4a0404b04c67f423a8aed Mon Sep 17 00:00:00 2001 From: = Date: Mon, 25 Jul 2022 11:02:51 +1000 Subject: [PATCH 8/8] Fixes for portal button --- app/Utils/HtmlEngine.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index b39d93509259..2a411578dc76 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -540,7 +540,7 @@ class HtmlEngine /*Payment Aliases*/ $data['$paymentLink'] = &$data['$payment_link']; $data['$payment_url'] = &$data['$payment_link']; - $data['$portalButton'] = &$data['$payment_link']; + $data['$portalButton'] = &$data['$portal_button']; $data['$dir'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'rtl' : 'ltr', 'label' => '']; $data['$dir_text_align'] = ['value' => in_array(optional($this->client->language())->locale, ['ar', 'he']) ? 'right' : 'left', 'label' => ''];