switch to endings for better oportunity to display in frontend

This commit is contained in:
paulwer 2023-12-15 18:36:17 +01:00
parent 36279be694
commit 168fef71c7
2 changed files with 27 additions and 5 deletions

View File

@ -24,11 +24,17 @@ class ValidExpenseMailbox implements Rule
private $validated_schema = false;
private $company_key = false;
private $isEnterprise = false;
private array $endings;
private bool $hasCompanyKey;
private array $enterprise_endings;
public function __construct(string $company_key, bool $isEnterprise = false)
{
$this->company_key = $company_key;
$this->isEnterprise = $isEnterprise;
$this->endings = explode(",", config('ninja.inbound_expense.webhook.mailbox_endings'));
$this->hasCompanyKey = config('ninja.inbound_expense.webhook.mailbox_hascompanykey');
$this->enterprise_endings = explode(",", config('ninja.inbound_expense.webhook.mailbox_enterprise_endings'));
}
public function passes($attribute, $value)
@ -44,8 +50,24 @@ class ValidExpenseMailbox implements Rule
}
// Validate Schema
$validated = !config('ninja.inbound_expense.webhook.mailbox_schema') || (preg_match(config('ninja.inbound_expense.webhook.mailbox_schema'), $value) && (!config('ninja.inbound_expense.webhook.mailbox_schema_hascompanykey') || str_contains($value, $this->company_key))) ? true : false;
$validated_enterprise = !config('ninja.inbound_expense.webhook.mailbox_schema_enterprise') || (Ninja::isHosted() && $this->isEnterprise && preg_match(config('ninja.inbound_expense.webhook.mailbox_schema_enterprise'), $value));
$validated_hasCompanyKey = !$this->hasCompanyKey || str_contains($value, $this->company_key);
$validated = false;
if ($validated_hasCompanyKey)
foreach ($this->endings as $ending) {
if (str_ends_with($ending, $value)) {
$validated = true;
break;
}
}
$validated_enterprise = false;
if (Ninja::isHosted() && $this->isEnterprise)
foreach ($this->endings as $ending) {
if (str_ends_with($ending, $value)) {
$validated_enterprise = true;
break;
}
}
if (!$validated && !$validated_enterprise)
return false;

View File

@ -238,9 +238,9 @@ return [
],
'webhook' => [
'mailbox_template' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOXTEMPLATE', null),
'mailbox_schema' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_SCHEMA', null),
'mailbox_schema_hascompanykey' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_SCHEMA_HASCOMPANYKEY', false),
'mailbox_schema_enterprise' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_SCHEMA_ENTERPRISE', '.*@expense\.invoicing\.co$'),
'mailbox_endings_endings' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_ENDINGS', ''),
'mailbox_hascompanykey' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_HASCOMPANYKEY', false),
'mailbox_endings_enterprise' => env('INBOUND_EXPENSE_WEBHOOK_MAILBOX_ENTERPRISE_ENDINGS', '@expense.invoicing.co'),
],
],
];