From a5b3215ff73e9b989b570d201883bda93fff443d Mon Sep 17 00:00:00 2001 From: paulwer Date: Tue, 19 Mar 2024 07:55:55 +0100 Subject: [PATCH] feat: company blacklist --- app/Models/Company.php | 7 +++++-- app/Services/IngresEmail/IngresEmailEngine.php | 8 ++++++++ ...2023_12_10_110951_create_imap_configuration_fields.php | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/Models/Company.php b/app/Models/Company.php index 28b61a9d7355..a868093c6238 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -118,6 +118,8 @@ use Laracasts\Presenter\PresentableTrait; * @property bool $expense_mailbox_allow_unknown * @property string|null $expense_mailbox_whitelist_domains * @property string|null $expense_mailbox_whitelist_emails + * @property string|null $expense_mailbox_blacklist_domains + * @property string|null $expense_mailbox_blacklist_emails * @property int $deleted_at * @property string $smtp_username * @property string $smtp_password @@ -373,7 +375,8 @@ class Company extends BaseModel 'expense_mailbox_allow_unknown', 'expense_mailbox_whitelist_domains', 'expense_mailbox_whitelist_emails', - 'expense_mailbox_whitelist', + 'expense_mailbox_blacklist_domains', + 'expense_mailbox_blacklist_emails', 'smtp_host', 'smtp_port', 'smtp_encryption', @@ -727,7 +730,7 @@ class Company extends BaseModel public function getLocale() { - return isset($this->settings->language_id) && $this->language() ? $this->language()->locale : config('ninja.i18n.locale'); + return isset ($this->settings->language_id) && $this->language() ? $this->language()->locale : config('ninja.i18n.locale'); } public function getLogo(): ?string diff --git a/app/Services/IngresEmail/IngresEmailEngine.php b/app/Services/IngresEmail/IngresEmailEngine.php index f98b213cad94..42fd8a304719 100644 --- a/app/Services/IngresEmail/IngresEmailEngine.php +++ b/app/Services/IngresEmail/IngresEmailEngine.php @@ -207,6 +207,14 @@ class IngresEmailEngine $domain_whitelist = explode(",", $this->company->expense_mailbox_whitelist_domains); if (in_array($domain, $domain_whitelist)) return true; + $email_blacklist = explode(",", $this->company->expense_mailbox_blacklist_emails); + if (in_array($this->email->from, $email_blacklist)) + return false; + $domain_blacklist = explode(",", $this->company->expense_mailbox_blacklist_domains); + if (in_array($domain, $domain_blacklist)) + return false; + + // allow unknown if ($this->company->expense_mailbox_allow_unknown && sizeOf($email_whitelist) == 0 && sizeOf($domain_whitelist) == 0) // from unknown only, when no whitelists are defined return true; diff --git a/database/migrations/2023_12_10_110951_create_imap_configuration_fields.php b/database/migrations/2023_12_10_110951_create_imap_configuration_fields.php index 5c4937ff1bb2..5a34ab745f7b 100644 --- a/database/migrations/2023_12_10_110951_create_imap_configuration_fields.php +++ b/database/migrations/2023_12_10_110951_create_imap_configuration_fields.php @@ -19,6 +19,8 @@ return new class extends Migration { $table->boolean("expense_mailbox_allow_unknown")->default(false); $table->string("expense_mailbox_whitelist_domains")->nullable(); $table->string("expense_mailbox_whitelist_emails")->nullable(); + $table->string("expense_mailbox_blacklist_domains")->nullable(); + $table->string("expense_mailbox_blacklist_emails")->nullable(); }); Schema::table('vendors', function (Blueprint $table) { $table->string("invoicing_email")->nullable();