1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 21:14:03 +00:00

Fix Queue tenancy

This commit is contained in:
Samuel Štancl 2019-09-22 20:30:30 +02:00
parent 23cf9e5366
commit 10c5f8d98d
2 changed files with 13 additions and 8 deletions

View file

@ -11,7 +11,7 @@ use Stancl\Tenancy\Tenant;
class QueueTenancyBootstrapper implements TenancyBootstrapper class QueueTenancyBootstrapper implements TenancyBootstrapper
{ {
/** @var bool Has tenancy been started. */ /** @var bool Has tenancy been started. */
protected $started = false; public $started = false;
/** @var Application */ /** @var Application */
protected $app; protected $app;
@ -20,11 +20,9 @@ class QueueTenancyBootstrapper implements TenancyBootstrapper
{ {
$this->app = $app; $this->app = $app;
$this->app['queue']->createPayloadUsing([$this, 'createPayload']); $bootstrapper = &$this;
$this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) { $this->app['queue']->createPayloadUsing(function () use (&$bootstrapper) {
if (array_key_exists('tenant_id', $event->job->payload())) { return $bootstrapper->getPayload();
tenancy()->initById($event->job->payload()['tenant_id']);
}
}); });
} }
@ -38,13 +36,13 @@ class QueueTenancyBootstrapper implements TenancyBootstrapper
$this->started = false; $this->started = false;
} }
public function createPayload() public function getPayload()
{ {
if (! $this->started) { if (! $this->started) {
return []; return [];
} }
$id = tenant()->get('id'); $id = tenant('id');
return [ return [
'tenant_id' => $id, 'tenant_id' => $id,

View file

@ -47,6 +47,13 @@ class TenancyServiceProvider extends ServiceProvider
return $instance; return $instance;
}); });
// Queue tenancy
$this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) {
if (array_key_exists('tenant_id', $event->job->payload())) {
tenancy()->initialize(tenancy()->find($event->job->payload()['tenant_id']));
}
});
} }
/** /**