Merge pull request #9015 from turbo124/v5-develop

Verification domains
This commit is contained in:
David Bomba 2023-12-03 22:27:33 +11:00 committed by GitHub
commit 54de9d6c07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 59501 additions and 52 deletions

59398
app/DataProviders/Domains.php Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,24 +11,25 @@
namespace App\Jobs\Account;
use App\DataMapper\Analytics\AccountCreated as AnalyticsAccountCreated;
use App\DataMapper\Analytics\AccountPlatform;
use App\Events\Account\AccountCreated;
use App\Utils\Ninja;
use App\Models\Account;
use Illuminate\Support\Str;
use App\Jobs\User\CreateUser;
use App\DataProviders\Domains;
use App\Jobs\Util\VersionCheck;
use App\Jobs\Mail\NinjaMailerJob;
use App\Jobs\Company\CreateCompany;
use Illuminate\Support\Facades\App;
use App\Jobs\Mail\NinjaMailerObject;
use App\Utils\Traits\User\LoginCache;
use App\Events\Account\AccountCreated;
use Turbo124\Beacon\Facades\LightLogs;
use App\Jobs\Company\CreateCompanyToken;
use Illuminate\Foundation\Bus\Dispatchable;
use App\DataMapper\Analytics\AccountPlatform;
use App\Jobs\Company\CreateCompanyPaymentTerms;
use App\Jobs\Company\CreateCompanyTaskStatuses;
use App\Jobs\Company\CreateCompanyToken;
use App\Jobs\Mail\NinjaMailerJob;
use App\Jobs\Mail\NinjaMailerObject;
use App\Jobs\User\CreateUser;
use App\Jobs\Util\VersionCheck;
use App\Models\Account;
use App\Utils\Ninja;
use App\Utils\Traits\User\LoginCache;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Str;
use Turbo124\Beacon\Facades\LightLogs;
use App\DataMapper\Analytics\AccountCreated as AnalyticsAccountCreated;
class CreateAccount
{
@ -39,6 +40,8 @@ class CreateAccount
protected $client_ip;
public function __construct(array $sp660339, $client_ip)
{
$this->request = $sp660339;
@ -77,7 +80,7 @@ class CreateAccount
$sp794f3f->hosted_company_count = config('ninja.quotas.free.max_companies');
$sp794f3f->account_sms_verified = true;
if (in_array($this->getDomain($this->request['email']), ['mailto.plus', 'givmail.com','yopmail.com','gmail.com', 'hotmail.com', 'outlook.com', 'yahoo.com', 'aol.com', 'mail.ru','brand-app.biz','proton.me','ema-sofia.eu', 'mail.com', 'fastmail.com'])) {
if (in_array($this->getDomain($this->request['email']), Domains::getDomains())) {
$sp794f3f->account_sms_verified = false;
}
@ -166,4 +169,8 @@ class CreateAccount
return 'gmail.com';
}
}

View File

@ -11,15 +11,16 @@
namespace App\Listeners\Mail;
use App\Utils\Ninja;
use App\Models\Webhook;
use App\Libraries\MultiDB;
use App\Models\QuoteInvitation;
use App\Models\CreditInvitation;
use App\Models\InvoiceInvitation;
use App\Models\PurchaseOrderInvitation;
use App\Models\QuoteInvitation;
use App\Models\RecurringInvoiceInvitation;
use App\Utils\Ninja;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Events\MessageSent;
use App\Models\RecurringInvoiceInvitation;
use Illuminate\Contracts\Queue\ShouldQueue;
use Symfony\Component\Mime\MessageConverter;
class MailSentListener implements ShouldQueue
@ -42,10 +43,7 @@ class MailSentListener implements ShouldQueue
public function handle(MessageSent $event)
{
if (!Ninja::isHosted()) {
return;
}
try {
$message_id = $event->sent->getMessageId();
$message = MessageConverter::toEmail($event->sent->getOriginalMessage());
@ -66,6 +64,10 @@ class MailSentListener implements ShouldQueue
$invitation->message_id = $message_id;
$invitation->save();
}
} catch (\Exception $e) {
nlog("Mail Sent Listener Exception");
nlog($e->getMessage());
}
}
private function discoverInvitation($key)
@ -74,14 +76,18 @@ class MailSentListener implements ShouldQueue
foreach (MultiDB::$dbs as $db) {
if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) {
$invitation->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
return $invitation;
} elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) {
$invitation->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
return $invitation;
} elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) {
return $invitation;
} elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) {
$invitation->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
return $invitation;
} elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) {
$invitation->purchase_order->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor");
return $invitation;
}
}

View File

@ -11,30 +11,32 @@
namespace Tests\Integration;
use App\DataMapper\CompanySettings;
use App\DataMapper\InvoiceItem;
use App\Factory\CompanyUserFactory;
use App\Jobs\Ledger\UpdateLedger;
use App\Models\Account;
use Tests\TestCase;
use App\Models\User;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Account;
use App\Models\Company;
use App\Models\CompanyLedger;
use App\Models\CompanyToken;
use App\Models\Invoice;
use App\Models\Payment;
use App\Models\User;
use App\Models\CompanyToken;
use App\Models\ClientContact;
use App\Models\CompanyLedger;
use App\Utils\Traits\AppSetup;
use App\DataMapper\InvoiceItem;
use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use App\Jobs\Ledger\UpdateLedger;
use App\DataMapper\CompanySettings;
use App\Factory\CompanyUserFactory;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
/** @test*/
class CompanyLedgerTest extends TestCase
{
use DatabaseTransactions;
use MakesHash;
use AppSetup;
public $company;
@ -55,6 +57,7 @@ class CompanyLedgerTest extends TestCase
$this->withoutExceptionHandling();
$this->artisan('db:seed --force');
$this->buildCache(true);
$this->faker = \Faker\Factory::create();
$fake_email = $this->faker->email();

View File

@ -0,0 +1,35 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace Tests\Unit;
use App\DataProviders\Domains;
use Tests\TestCase;
/**
* @test
*/
class DomainCheckTest extends TestCase
{
protected function setUp() :void
{
parent::setUp();
}
public function testDomainCheck()
{
$this->assertTrue(in_array('yopmail.com', Domains::getDomains()));
$this->assertFalse(in_array('invoiceninja.com', Domains::getDomains()));
}
}