mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-04 09:04:03 +00:00
fix: Enhance DomainTenantResolver to handle SingleDomainTenant correctly
This commit is contained in:
parent
947894fa1d
commit
e351316014
2 changed files with 26 additions and 2 deletions
|
|
@ -69,9 +69,20 @@ class DomainTenantResolver extends Contracts\CachedTenantResolver
|
||||||
protected static function setCurrentDomain(Tenant $tenant, string $domain): void
|
protected static function setCurrentDomain(Tenant $tenant, string $domain): void
|
||||||
{
|
{
|
||||||
/** @var Tenant&Model $tenant */
|
/** @var Tenant&Model $tenant */
|
||||||
if (! $tenant instanceof SingleDomainTenant) {
|
if ($tenant instanceof SingleDomainTenant) {
|
||||||
static::$currentDomain = $tenant->domains->where('domain', $domain)->first();
|
$domainModelClass = config('tenancy.models.domain');
|
||||||
|
/** @var Domain&Model $domainModel */
|
||||||
|
$domainModel = new $domainModelClass;
|
||||||
|
$domainModel->setAttribute('domain', $domain);
|
||||||
|
$domainModel->setAttribute(Tenancy::tenantKeyColumn(), $tenant->getTenantKey());
|
||||||
|
$domainModel->setRelation('tenant', $tenant);
|
||||||
|
|
||||||
|
static::$currentDomain = $domainModel;
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static::$currentDomain = $tenant->domains->where('domain', $domain)->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPossibleCacheKeys(Tenant&Model $tenant): array
|
public function getPossibleCacheKeys(Tenant&Model $tenant): array
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
use Stancl\Tenancy\Contracts\Domain;
|
||||||
use Stancl\Tenancy\Tests\Etc\SingleDomainTenant;
|
use Stancl\Tenancy\Tests\Etc\SingleDomainTenant;
|
||||||
use Stancl\Tenancy\Resolvers\DomainTenantResolver;
|
use Stancl\Tenancy\Resolvers\DomainTenantResolver;
|
||||||
use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
|
use Stancl\Tenancy\Middleware\InitializeTenancyByDomain;
|
||||||
|
|
@ -132,3 +133,15 @@ test('single domain tenant can be identified by domain or subdomain', function (
|
||||||
[PreventAccessFromUnwantedDomains::class, InitializeTenancyBySubdomain::class], // Identification middleware
|
[PreventAccessFromUnwantedDomains::class, InitializeTenancyBySubdomain::class], // Identification middleware
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
test('domain contract can be injected for single domain tenants', function () {
|
||||||
|
SingleDomainTenant::create(['domain' => 'acme.single.test']);
|
||||||
|
|
||||||
|
Route::get('/domain-check', function (Domain $domain) {
|
||||||
|
return $domain?->domain ?? 'missing';
|
||||||
|
})->middleware([InitializeTenancyByDomain::class]);
|
||||||
|
|
||||||
|
pest()
|
||||||
|
->get('http://acme.single.test/domain-check')
|
||||||
|
->assertSee('acme.single.test');
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue