diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index d0909c4b0bd3..87272ddfd084 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -12,6 +12,7 @@ namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; +use Illuminate\Session\TokenMismatchException; class VerifyCsrfToken extends Middleware { @@ -30,4 +31,17 @@ class VerifyCsrfToken extends Middleware protected $except = [ // 'livewire/message/*' ]; + + + public function handle($request, \Closure $next) { + + try { + return parent::handle($request, $next); + } catch (TokenMismatchException $ex) { + + throw new TokenMismatchException('CSRF token mismatch.'); + + } + } + } diff --git a/app/Mail/BouncedEmail.php b/app/Mail/BouncedEmail.php index 030303a0b912..9227c39eb6d6 100644 --- a/app/Mail/BouncedEmail.php +++ b/app/Mail/BouncedEmail.php @@ -16,6 +16,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class BouncedEmail extends Mailable { @@ -34,9 +35,11 @@ class BouncedEmail extends Mailable */ public function build() { + App::setLocale($this->invitation->company->getLocale()); + $entity_type = class_basename(lcfirst($this->invitation->getEntityType())); - $subject = ctrans("texts.notification_{$entity_type}_bounced_subject", ['invoice' => $invoice->number]); + $subject = ctrans("texts.notification_{$entity_type}_bounced_subject", ['invoice' => $this->invitation->invoice->number]); return $this->from(config('mail.from.address'), config('mail.from.name')) diff --git a/app/Mail/Company/CompanyDeleted.php b/app/Mail/Company/CompanyDeleted.php index da021afeaf29..5f32f7d6071f 100644 --- a/app/Mail/Company/CompanyDeleted.php +++ b/app/Mail/Company/CompanyDeleted.php @@ -15,6 +15,7 @@ namespace App\Mail\Company; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class CompanyDeleted extends Mailable { @@ -47,6 +48,8 @@ class CompanyDeleted extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + return $this->from(config('mail.from.address'), config('mail.from.name')) ->subject(ctrans('texts.company_deleted')) ->view('email.admin.company_deleted') diff --git a/app/Mail/ContactPasswordlessLogin.php b/app/Mail/ContactPasswordlessLogin.php index d301df400fc3..4370041767b6 100644 --- a/app/Mail/ContactPasswordlessLogin.php +++ b/app/Mail/ContactPasswordlessLogin.php @@ -18,6 +18,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class ContactPasswordlessLogin extends Mailable { @@ -52,6 +53,9 @@ class ContactPasswordlessLogin extends Mailable */ public function build() { + + App::setLocale($this->company->getLocale()); + return $this ->subject(ctrans('texts.account_passwordless_login')) ->view('email.billing.passwordless-login', [ diff --git a/app/Mail/DownloadInvoices.php b/app/Mail/DownloadInvoices.php index 5dc1b5808cd0..ba82d325a710 100644 --- a/app/Mail/DownloadInvoices.php +++ b/app/Mail/DownloadInvoices.php @@ -6,6 +6,7 @@ use App\Models\Company; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class DownloadInvoices extends Mailable { @@ -27,6 +28,9 @@ class DownloadInvoices extends Mailable */ public function build() { + + App::setLocale($this->company->getLocale()); + return $this->from(config('mail.from.address'), config('mail.from.name')) ->subject(ctrans('texts.download_files')) ->view('email.admin.download_invoices', [ diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index ad9645b6c8f7..d319bac91577 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -45,6 +45,7 @@ class CreditEmailEngine extends BaseEmailEngine public function build() { App::forgetInstance('translator'); + $t = app('translator'); $t->replace(Ninja::transformTranslations($this->client->getMergedSettings())); diff --git a/app/Mail/Gateways/ACHVerificationNotification.php b/app/Mail/Gateways/ACHVerificationNotification.php index 322e6b96e2c8..cd4840f54af6 100644 --- a/app/Mail/Gateways/ACHVerificationNotification.php +++ b/app/Mail/Gateways/ACHVerificationNotification.php @@ -15,6 +15,7 @@ namespace App\Mail\Gateways; use App\Models\Company; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class ACHVerificationNotification extends Mailable { @@ -49,6 +50,8 @@ class ACHVerificationNotification extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + return $this ->subject(ctrans('texts.ach_verification_notification_label')) ->view('email.gateways.ach-verification-notification', [ diff --git a/app/Mail/Import/CompanyImportFailure.php b/app/Mail/Import/CompanyImportFailure.php index 053c78ca1bbe..761c89fdcc98 100644 --- a/app/Mail/Import/CompanyImportFailure.php +++ b/app/Mail/Import/CompanyImportFailure.php @@ -14,6 +14,7 @@ namespace App\Mail\Import; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class CompanyImportFailure extends Mailable { @@ -51,6 +52,8 @@ class CompanyImportFailure extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + $this->settings = $this->company->settings; $this->logo = $this->company->present()->logo(); $this->title = ctrans('texts.company_import_failure_subject', ['company' => $this->company->present()->name()]); diff --git a/app/Mail/Migration/MaxCompanies.php b/app/Mail/Migration/MaxCompanies.php index 905ad6692aa1..c879be10e0a2 100644 --- a/app/Mail/Migration/MaxCompanies.php +++ b/app/Mail/Migration/MaxCompanies.php @@ -14,6 +14,7 @@ namespace App\Mail\Migration; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class MaxCompanies extends Mailable { @@ -48,6 +49,8 @@ class MaxCompanies extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + $this->settings = $this->company->settings; $this->logo = $this->company->present()->logo(); $this->title = ctrans('texts.max_companies'); diff --git a/app/Mail/Migration/StripeConnectMigration.php b/app/Mail/Migration/StripeConnectMigration.php index 93fda725afac..7290cb41b8fb 100644 --- a/app/Mail/Migration/StripeConnectMigration.php +++ b/app/Mail/Migration/StripeConnectMigration.php @@ -14,6 +14,7 @@ namespace App\Mail\Migration; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class StripeConnectMigration extends Mailable { @@ -44,6 +45,8 @@ class StripeConnectMigration extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + $this->settings = $this->company->settings; $this->logo = $this->company->present()->logo(); $this->whitelabel = $this->company->account->isPaid(); diff --git a/app/Mail/Ninja/EmailQuotaExceeded.php b/app/Mail/Ninja/EmailQuotaExceeded.php index dc4507f73a16..8d6ba0bf938b 100644 --- a/app/Mail/Ninja/EmailQuotaExceeded.php +++ b/app/Mail/Ninja/EmailQuotaExceeded.php @@ -14,6 +14,7 @@ namespace App\Mail\Ninja; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\App; class EmailQuotaExceeded extends Mailable { @@ -47,6 +48,8 @@ class EmailQuotaExceeded extends Mailable */ public function build() { + App::setLocale($this->company->getLocale()); + $this->settings = $this->company->settings; $this->logo = $this->company->present()->logo(); $this->title = ctrans('texts.email_quota_exceeded_subject'); diff --git a/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php b/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php index a21b1dd55ece..6032a552fa24 100644 --- a/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php +++ b/app/Mail/RecurringInvoice/ClientContactRequestCancellationObject.php @@ -37,6 +37,8 @@ class ClientContactRequestCancellationObject { App::forgetInstance('translator'); + App::setLocale($this->company->getLocale()); + $t = app('translator'); $t->replace(Ninja::transformTranslations($this->company->settings));