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;
 | 
					namespace App\Jobs\Account;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use App\DataMapper\Analytics\AccountCreated as AnalyticsAccountCreated;
 | 
					use App\Utils\Ninja;
 | 
				
			||||||
use App\DataMapper\Analytics\AccountPlatform;
 | 
					use App\Models\Account;
 | 
				
			||||||
use App\Events\Account\AccountCreated;
 | 
					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 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\CreateCompanyPaymentTerms;
 | 
				
			||||||
use App\Jobs\Company\CreateCompanyTaskStatuses;
 | 
					use App\Jobs\Company\CreateCompanyTaskStatuses;
 | 
				
			||||||
use App\Jobs\Company\CreateCompanyToken;
 | 
					use App\DataMapper\Analytics\AccountCreated as AnalyticsAccountCreated;
 | 
				
			||||||
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;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CreateAccount
 | 
					class CreateAccount
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -39,6 +40,8 @@ class CreateAccount
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    protected $client_ip;
 | 
					    protected $client_ip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function __construct(array $sp660339, $client_ip)
 | 
					    public function __construct(array $sp660339, $client_ip)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->request = $sp660339;
 | 
					        $this->request = $sp660339;
 | 
				
			||||||
@ -77,7 +80,7 @@ class CreateAccount
 | 
				
			|||||||
            $sp794f3f->hosted_company_count = config('ninja.quotas.free.max_companies');
 | 
					            $sp794f3f->hosted_company_count = config('ninja.quotas.free.max_companies');
 | 
				
			||||||
            $sp794f3f->account_sms_verified = true;
 | 
					            $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;
 | 
					                $sp794f3f->account_sms_verified = false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -166,4 +169,8 @@ class CreateAccount
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return 'gmail.com';
 | 
					        return 'gmail.com';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,15 +11,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace App\Listeners\Mail;
 | 
					namespace App\Listeners\Mail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use App\Utils\Ninja;
 | 
				
			||||||
 | 
					use App\Models\Webhook;
 | 
				
			||||||
use App\Libraries\MultiDB;
 | 
					use App\Libraries\MultiDB;
 | 
				
			||||||
 | 
					use App\Models\QuoteInvitation;
 | 
				
			||||||
use App\Models\CreditInvitation;
 | 
					use App\Models\CreditInvitation;
 | 
				
			||||||
use App\Models\InvoiceInvitation;
 | 
					use App\Models\InvoiceInvitation;
 | 
				
			||||||
use App\Models\PurchaseOrderInvitation;
 | 
					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 Illuminate\Mail\Events\MessageSent;
 | 
				
			||||||
 | 
					use App\Models\RecurringInvoiceInvitation;
 | 
				
			||||||
 | 
					use Illuminate\Contracts\Queue\ShouldQueue;
 | 
				
			||||||
use Symfony\Component\Mime\MessageConverter;
 | 
					use Symfony\Component\Mime\MessageConverter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MailSentListener implements ShouldQueue
 | 
					class MailSentListener implements ShouldQueue
 | 
				
			||||||
@ -42,10 +43,7 @@ class MailSentListener implements ShouldQueue
 | 
				
			|||||||
    public function handle(MessageSent $event)
 | 
					    public function handle(MessageSent $event)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
                   
 | 
					                   
 | 
				
			||||||
        if (!Ninja::isHosted()) {
 | 
					        try {
 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            $message_id = $event->sent->getMessageId();
 | 
					            $message_id = $event->sent->getMessageId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $message = MessageConverter::toEmail($event->sent->getOriginalMessage());
 | 
					            $message = MessageConverter::toEmail($event->sent->getOriginalMessage());
 | 
				
			||||||
@ -66,6 +64,10 @@ class MailSentListener implements ShouldQueue
 | 
				
			|||||||
                $invitation->message_id = $message_id;
 | 
					                $invitation->message_id = $message_id;
 | 
				
			||||||
                $invitation->save();
 | 
					                $invitation->save();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (\Exception $e) {
 | 
				
			||||||
 | 
					            nlog("Mail Sent Listener Exception");
 | 
				
			||||||
 | 
					            nlog($e->getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private function discoverInvitation($key)
 | 
					    private function discoverInvitation($key)
 | 
				
			||||||
@ -74,14 +76,18 @@ class MailSentListener implements ShouldQueue
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        foreach (MultiDB::$dbs as $db) {
 | 
					        foreach (MultiDB::$dbs as $db) {
 | 
				
			||||||
            if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) {
 | 
					            if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) {
 | 
				
			||||||
 | 
					                $invitation->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
 | 
				
			||||||
                return $invitation;
 | 
					                return $invitation;
 | 
				
			||||||
            } elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) {
 | 
					            } elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) {
 | 
				
			||||||
 | 
					                $invitation->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
 | 
				
			||||||
                return $invitation;
 | 
					                return $invitation;
 | 
				
			||||||
            } elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) {
 | 
					            } elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) {
 | 
				
			||||||
                return $invitation;
 | 
					                return $invitation;
 | 
				
			||||||
            } elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) {
 | 
					            } elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) {
 | 
				
			||||||
 | 
					                $invitation->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
 | 
				
			||||||
                return $invitation;
 | 
					                return $invitation;
 | 
				
			||||||
            } elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) {
 | 
					            } elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) {
 | 
				
			||||||
 | 
					                $invitation->purchase_order->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor");
 | 
				
			||||||
                return $invitation;
 | 
					                return $invitation;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -11,30 +11,32 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Tests\Integration;
 | 
					namespace Tests\Integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use App\DataMapper\CompanySettings;
 | 
					use Tests\TestCase;
 | 
				
			||||||
use App\DataMapper\InvoiceItem;
 | 
					use App\Models\User;
 | 
				
			||||||
use App\Factory\CompanyUserFactory;
 | 
					 | 
				
			||||||
use App\Jobs\Ledger\UpdateLedger;
 | 
					 | 
				
			||||||
use App\Models\Account;
 | 
					 | 
				
			||||||
use App\Models\Client;
 | 
					use App\Models\Client;
 | 
				
			||||||
use App\Models\ClientContact;
 | 
					use App\Models\Account;
 | 
				
			||||||
use App\Models\Company;
 | 
					use App\Models\Company;
 | 
				
			||||||
use App\Models\CompanyLedger;
 | 
					 | 
				
			||||||
use App\Models\CompanyToken;
 | 
					 | 
				
			||||||
use App\Models\Invoice;
 | 
					use App\Models\Invoice;
 | 
				
			||||||
use App\Models\Payment;
 | 
					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 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\Support\Facades\Hash;
 | 
				
			||||||
use Illuminate\Validation\ValidationException;
 | 
					use Illuminate\Validation\ValidationException;
 | 
				
			||||||
use Tests\TestCase;
 | 
					use Illuminate\Foundation\Testing\DatabaseTransactions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** @test*/
 | 
					/** @test*/
 | 
				
			||||||
class CompanyLedgerTest extends TestCase
 | 
					class CompanyLedgerTest extends TestCase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    use DatabaseTransactions;
 | 
					    use DatabaseTransactions;
 | 
				
			||||||
    use MakesHash;
 | 
					    use MakesHash;
 | 
				
			||||||
 | 
					    use AppSetup;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public $company;
 | 
					    public $company;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,6 +57,7 @@ class CompanyLedgerTest extends TestCase
 | 
				
			|||||||
        $this->withoutExceptionHandling();
 | 
					        $this->withoutExceptionHandling();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->artisan('db:seed --force');
 | 
					        $this->artisan('db:seed --force');
 | 
				
			||||||
 | 
					        $this->buildCache(true);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        $this->faker = \Faker\Factory::create();
 | 
					        $this->faker = \Faker\Factory::create();
 | 
				
			||||||
        $fake_email = $this->faker->email();
 | 
					        $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