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
|
||||
{
|
||||
/** @var Tenant&Model $tenant */
|
||||
if (! $tenant instanceof SingleDomainTenant) {
|
||||
static::$currentDomain = $tenant->domains->where('domain', $domain)->first();
|
||||
if ($tenant instanceof SingleDomainTenant) {
|
||||
$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
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Stancl\Tenancy\Contracts\Domain;
|
||||
use Stancl\Tenancy\Tests\Etc\SingleDomainTenant;
|
||||
use Stancl\Tenancy\Resolvers\DomainTenantResolver;
|
||||
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
|
||||
],
|
||||
]);
|
||||
|
||||
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