diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index 790e7210..92da8e9a 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -50,6 +50,7 @@ class TenancyServiceProvider extends ServiceProvider $this->app->register(TenantRouteServiceProvider::class); $this->registerTenantRedirectMacro(); + $this->makeQueuesTenantAware(); } public function registerTenantRedirectMacro() @@ -65,6 +66,19 @@ class TenancyServiceProvider extends ServiceProvider }); } + public function makeQueuesTenantAware() + { + $this->app['queue']->createPayloadUsing(function () { + return tenancy()->initialized ? ['tenant_uuid' => tenant('uuid')] : []; + }); + + $this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) { + if (array_key_exists('tenant_uuid', $event->job->payload())) { + tenancy()->initById($event->job->payload()['tenant_uuid']); + } + }); + } + /** * Register services. *