mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 23:37:33 -05:00 
			
		
		
		
	
						commit
						54de9d6c07
					
				
							
								
								
									
										59398
									
								
								app/DataProviders/Domains.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59398
									
								
								app/DataProviders/Domains.php
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -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';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								tests/Unit/DomainCheckTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								tests/Unit/DomainCheckTest.php
									
									
									
									
									
										Normal 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()));
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user