From 4287f2a8a0edb9e327d0d70d9d85ee98ce7e7527 Mon Sep 17 00:00:00 2001 From: lukinovec Date: Mon, 29 Dec 2025 14:14:59 +0100 Subject: [PATCH] Fix `DomainTenantResolver::isSubdomain()` Previously, the method returned `true` even for central domains, or tenant domains that ended with a central domain (e.g. tenant-app.test when app.test was central domain). This fix is basically the same as in #1423. --- src/Resolvers/DomainTenantResolver.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Resolvers/DomainTenantResolver.php b/src/Resolvers/DomainTenantResolver.php index 9535cdf2..1a46b6ed 100644 --- a/src/Resolvers/DomainTenantResolver.php +++ b/src/Resolvers/DomainTenantResolver.php @@ -13,6 +13,7 @@ use Stancl\Tenancy\Contracts\SingleDomainTenant; use Stancl\Tenancy\Contracts\Tenant; use Stancl\Tenancy\Exceptions\TenantCouldNotBeIdentifiedOnDomainException; use Stancl\Tenancy\Tenancy; +use Illuminate\Support\Arr; class DomainTenantResolver extends Contracts\CachedTenantResolver { @@ -58,7 +59,19 @@ class DomainTenantResolver extends Contracts\CachedTenantResolver public static function isSubdomain(string $domain): bool { - return Str::endsWith($domain, config('tenancy.identification.central_domains')); + $centralDomains = Arr::wrap(config('tenancy.identification.central_domains')); + + foreach ($centralDomains as $centralDomain) { + if ($domain === $centralDomain) { + return false; + } + + if (Str::endsWith($domain, '.' . $centralDomain)) { + return true; + } + } + + return false; } public function resolved(Tenant $tenant, mixed ...$args): void