Skip to content

Commit

Permalink
Contract IsTenant replace Tenant uses
Browse files Browse the repository at this point in the history
  • Loading branch information
masterix21 committed Jul 18, 2024
1 parent 593df73 commit aa5652b
Show file tree
Hide file tree
Showing 30 changed files with 186 additions and 191 deletions.
6 changes: 3 additions & 3 deletions src/Actions/ForgetCurrentTenantAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace Spatie\Multitenancy\Actions;

use Spatie\Multitenancy\Contracts\IsTenant;
use Spatie\Multitenancy\Events\ForgettingCurrentTenantEvent;
use Spatie\Multitenancy\Events\ForgotCurrentTenantEvent;
use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Tasks\SwitchTenantTask;
use Spatie\Multitenancy\Tasks\TasksCollection;

Expand All @@ -15,7 +15,7 @@ public function __construct(
) {
}

public function execute(Tenant $tenant)
public function execute(IsTenant $tenant): void
{
event(new ForgettingCurrentTenantEvent($tenant));

Expand All @@ -33,7 +33,7 @@ protected function performTaskToForgetCurrentTenant(): self
return $this;
}

protected function clearBoundCurrentTenant()
protected function clearBoundCurrentTenant(): void
{
$containerKey = config('multitenancy.current_tenant_container_key');

Expand Down
14 changes: 5 additions & 9 deletions src/Actions/MakeQueueTenantAwareAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@
use Illuminate\Queue\Events\JobRetryRequested;
use Illuminate\Support\Arr;
use Spatie\Multitenancy\Concerns\BindAsCurrentTenant;
use Spatie\Multitenancy\Contracts\IsTenant;
use Spatie\Multitenancy\Exceptions\CurrentTenantCouldNotBeDeterminedInTenantAwareJob;
use Spatie\Multitenancy\Jobs\NotTenantAware;
use Spatie\Multitenancy\Jobs\TenantAware;
use Spatie\Multitenancy\Models\Concerns\UsesTenantModel;
use Spatie\Multitenancy\Models\Tenant;

class MakeQueueTenantAwareAction
{
use UsesTenantModel;
use BindAsCurrentTenant;

public function execute(): void
Expand All @@ -34,7 +32,7 @@ protected function listenForJobsBeingQueued(): static
return [];
}

return ['tenantId' => Tenant::current()?->id];
return ['tenantId' => app(IsTenant::class)::current()?->getKey()];
});

return $this;
Expand Down Expand Up @@ -90,7 +88,7 @@ protected function getEventPayload($event): ?array
};
}

protected function findTenant(JobProcessing|JobRetryRequested $event): Tenant
protected function findTenant(JobProcessing|JobRetryRequested $event): IsTenant
{
$tenantId = $this->getEventPayload($event)['tenantId'] ?? null;

Expand All @@ -100,9 +98,7 @@ protected function findTenant(JobProcessing|JobRetryRequested $event): Tenant
throw CurrentTenantCouldNotBeDeterminedInTenantAwareJob::noIdSet($event);
}


/** @var \Spatie\Multitenancy\Models\Tenant $tenant */
if (! $tenant = $this->getTenantModel()::find($tenantId)) {
if (! $tenant = app(IsTenant::class)::find($tenantId)) {
$event->job->delete();

throw CurrentTenantCouldNotBeDeterminedInTenantAwareJob::noTenantFound($event);
Expand Down Expand Up @@ -134,6 +130,6 @@ protected function bindOrForgetCurrentTenant(JobProcessing|JobRetryRequested $ev
return;
}

$this->getTenantModel()::forgetCurrent();
app(IsTenant::class)::forgetCurrent();
}
}
6 changes: 3 additions & 3 deletions src/Actions/MakeTenantCurrentAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace Spatie\Multitenancy\Actions;

use Spatie\Multitenancy\Concerns\BindAsCurrentTenant;
use Spatie\Multitenancy\Contracts\IsTenant;
use Spatie\Multitenancy\Events\MadeTenantCurrentEvent;
use Spatie\Multitenancy\Events\MakingTenantCurrentEvent;
use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Tasks\SwitchTenantTask;
use Spatie\Multitenancy\Tasks\TasksCollection;

Expand All @@ -18,7 +18,7 @@ public function __construct(
) {
}

public function execute(Tenant $tenant)
public function execute(IsTenant $tenant): static
{
event(new MakingTenantCurrentEvent($tenant));

Expand All @@ -31,7 +31,7 @@ public function execute(Tenant $tenant)
return $this;
}

protected function performTasksToMakeTenantCurrent(Tenant $tenant): self
protected function performTasksToMakeTenantCurrent(IsTenant $tenant): static
{
$this->tasksCollection->each(fn (SwitchTenantTask $task) => $task->makeCurrent($tenant));

Expand Down
4 changes: 2 additions & 2 deletions src/Actions/MigrateTenantAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Spatie\Multitenancy\Actions;

use Illuminate\Support\Facades\Artisan;
use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;
use Symfony\Component\Console\Output\OutputInterface;

class MigrateTenantAction
Expand Down Expand Up @@ -35,7 +35,7 @@ public function output(OutputInterface $output): self
return $this;
}

public function execute(Tenant $tenant): self
public function execute(IsTenant $tenant): self
{
$tenant->execute(function () {
$migrationCommand = $this->fresh ? 'migrate:fresh' : 'migrate';
Expand Down
5 changes: 2 additions & 3 deletions src/Commands/Concerns/TenantAware.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,19 @@

use Illuminate\Support\Arr;
use Spatie\Multitenancy\Concerns\UsesMultitenancyConfig;
use Spatie\Multitenancy\Models\Concerns\UsesTenantModel;
use Spatie\Multitenancy\Contracts\IsTenant;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

trait TenantAware
{
use UsesMultitenancyConfig;
use UsesTenantModel;

protected function execute(InputInterface $input, OutputInterface $output): int
{
$tenants = Arr::wrap($this->option('tenant'));

$tenantQuery = $this->getTenantModel()::query()
$tenantQuery = app(IsTenant::class)::query()
->when(! blank($tenants), function ($query) use ($tenants) {
collect($this->getTenantArtisanSearchFields())
->each(fn ($field) => $query->orWhereIn($field, $tenants));
Expand Down
8 changes: 3 additions & 5 deletions src/Commands/TenantsArtisanCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,24 @@
use Illuminate\Support\Facades\Artisan;
use Spatie\Multitenancy\Commands\Concerns\TenantAware;
use Spatie\Multitenancy\Concerns\UsesMultitenancyConfig;
use Spatie\Multitenancy\Models\Concerns\UsesTenantModel;
use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class TenantsArtisanCommand extends Command
{
use UsesTenantModel;
use UsesMultitenancyConfig;
use TenantAware;

protected $signature = 'tenants:artisan {artisanCommand} {--tenant=*}';

public function handle()
public function handle(): void
{
if (! $artisanCommand = $this->argument('artisanCommand')) {
$artisanCommand = $this->ask('Which artisan command do you want to run for all tenants?');
}

$artisanCommand = addslashes($artisanCommand);

$tenant = Tenant::current();
$tenant = app(IsTenant::class)::current();

$this->line('');
$this->info("Running command for tenant `{$tenant->name}` (id: {$tenant->getKey()})...");
Expand Down
4 changes: 2 additions & 2 deletions src/Concerns/BindAsCurrentTenant.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

namespace Spatie\Multitenancy\Concerns;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

trait BindAsCurrentTenant
{
protected function bindAsCurrentTenant(Tenant $tenant): self
protected function bindAsCurrentTenant(IsTenant $tenant): self
{
$containerKey = config('multitenancy.current_tenant_container_key');

Expand Down
19 changes: 19 additions & 0 deletions src/Contracts/IsTenant.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace Spatie\Multitenancy\Contracts;

use Spatie\Multitenancy\TenantCollection;

interface IsTenant
{
public static function current() : ?static;
public static function checkCurrent() : bool;
public static function forgetCurrent(): ?static;
public function makeCurrent() : static;
public function forget() : static;
public function isCurrent(): bool;
public function getDatabaseName(): string;
public function newCollection(array $models = []): TenantCollection;
public function execute(callable $callable) : mixed;
public function callback(callable $callable): \Closure;
}
4 changes: 2 additions & 2 deletions src/Events/ForgettingCurrentTenantEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Spatie\Multitenancy\Events;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class ForgettingCurrentTenantEvent
{
public function __construct(
public Tenant $tenant
public IsTenant $tenant
) {
}
}
4 changes: 2 additions & 2 deletions src/Events/ForgotCurrentTenantEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Spatie\Multitenancy\Events;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class ForgotCurrentTenantEvent
{
public function __construct(
public Tenant $tenant
public IsTenant $tenant
) {
}
}
4 changes: 2 additions & 2 deletions src/Events/MadeTenantCurrentEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Spatie\Multitenancy\Events;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class MadeTenantCurrentEvent
{
public function __construct(
public Tenant $tenant
public IsTenant $tenant
) {
}
}
4 changes: 2 additions & 2 deletions src/Events/MakingTenantCurrentEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace Spatie\Multitenancy\Events;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class MakingTenantCurrentEvent
{
public function __construct(
public Tenant $tenant
public IsTenant $tenant
) {
}
}
4 changes: 2 additions & 2 deletions src/Http/Middleware/EnsureValidTenantSession.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ public function handle($request, Closure $next)
$sessionKey = 'ensure_valid_tenant_session_tenant_id';

if (! $request->session()->has($sessionKey)) {
$request->session()->put($sessionKey, app($this->currentTenantContainerKey())->id);
$request->session()->put($sessionKey, app($this->currentTenantContainerKey())->getKey());

return $next($request);
}

if ($request->session()->get($sessionKey) !== app($this->currentTenantContainerKey())->id) {
if ($request->session()->get($sessionKey) !== app($this->currentTenantContainerKey())->getKey()) {
return $this->handleInvalidTenantSession($request);
}

Expand Down
6 changes: 2 additions & 4 deletions src/Http/Middleware/NeedsTenant.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
namespace Spatie\Multitenancy\Http\Middleware;

use Closure;
use Spatie\Multitenancy\Contracts\IsTenant;
use Spatie\Multitenancy\Exceptions\NoCurrentTenant;
use Spatie\Multitenancy\Models\Concerns\UsesTenantModel;

class NeedsTenant
{
use UsesTenantModel;

public function handle($request, Closure $next)
{
if (! $this->getTenantModel()::checkCurrent()) {
if (! app(IsTenant::class)::checkCurrent()) {
return $this->handleInvalidRequest();
}

Expand Down
6 changes: 3 additions & 3 deletions src/Landlord.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

namespace Spatie\Multitenancy;

use Spatie\Multitenancy\Models\Tenant;
use Spatie\Multitenancy\Contracts\IsTenant;

class Landlord
{
public static function execute(callable $callable)
{
$originalCurrentTenant = Tenant::current();
$originalCurrentTenant = app(IsTenant::class)::current();

Tenant::forgetCurrent();
app(IsTenant::class)::forgetCurrent();

$result = $callable();

Expand Down
Loading

0 comments on commit aa5652b

Please sign in to comment.