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

Single-domain tenants (#16)

* Add SingleDomainTenant

* Add logic for single domain tenants

* Test that the single domain approach works (wip)

* Fix code style (php-cs-fixer)

* Simplify SubdomainTest tests

* Add single domain tenant conditions to DomainTenantResolver

* Test single domain tenants in resolver test

* Fix test name typo

* Improve runUsingBothDomainApproaches()

* Delete extra tenancy()->end()

* Test early identification with both domain approaches

* Test that things work with both domain approaches in the rest of the tests

* Fix falsely passing test

* Fix PHPStan errors

* Change SingleDomainTenant to a contract, add SingleDomainTenant test model

* Fix TenantList domainsCLI()

* Improve setCurrentDomain() check

* Fix code style (php-cs-fixer)

* Add annotation

* Revert getCustomColumns() change

* Add comments

* Use the domain returned by the closure in runUsingBoth..()

* Delete `migrate` from test

* Improve test names

* Use variable instead of repeating the same string multiple times

* Update comment

* Add comment

* Clean up PreventAccess test

* Don't assign domain to a single-use variable

* Update comments

* Uncomment datasets

* Add todo

* Fix user impersonation test

* Don't specify tenant key when creating tenant in runUsingBoth..()

* Improve universal route test

* Improve `runUsingBothDomainApproaches()`

* Add tests specific to single domain tenants

* Get rid of the runUsingBothDomainApproaches method

* Add test file specific for the single domain tenant feature

* Rename test

* Make getCustomColumns() function static

* Positiopn datasets differently

* Fix early id test

* Add prevent MW to route MW in test

* Fix single domain tenant tests

* Delete SingleDomainTenantTest (CI testing)

* Add the test file back

* TUrn APP_DEBUG on temporarily

* Turn debug off

* Try creating tenant with non-unique domain (CI testing)

* dd duplicate tenant records

* Revert testing change

* Make SingleDomainTenant not extend base tenant (VirtualColumn issues)

* Fix early id test

* add todo

* Use dev-master stancl/virtualcolumn

* Make SingleDomainTenant extend the tenant base model

* remove todo

* Clean up EarlyIdentificationTest changes

* Finish test file cleanup

* Fix test

* improve test

---------

Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
This commit is contained in:
lukinovec 2023-11-08 11:38:26 +01:00 committed by GitHub
parent c34952f328
commit e25e7b7961
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 243 additions and 14 deletions

View file

@ -181,7 +181,6 @@ test('early identification works with request data identification', function (st
]);
test('early identification works with domain identification', function (string $middleware, string $domain, bool $useKernelIdentification, RouteMode $defaultRouteMode) {
config(['tenancy.tenant_model' => Tenant::class]);
config(['tenancy.default_route_mode' => $defaultRouteMode]);
if ($useKernelIdentification) {
@ -209,6 +208,10 @@ test('early identification works with domain identification', function (string $
$routeThatShouldReceiveMiddleware->middleware($defaultToTenantRoutes ? 'central' : 'tenant');
} elseif (! $defaultToTenantRoutes) {
$tenantRoute->middleware('tenant');
} else {
// Route-level identification + defaulting to tenant routes
// We still have to apply the tenant middleware to the routes, so they aren't really tenant by default
$tenantRoute->middleware([$middleware, PreventAccessFromUnwantedDomains::class]);
}
$tenant = Tenant::create();
@ -234,7 +237,7 @@ test('early identification works with domain identification', function (string $
}
// Expect tenancy is initialized (or not) for the right tenant at the tenant route
expect($response->getContent())->toBe('token:' . (tenant()?->getTenantKey() ?? 'central'));
expect($response->getContent())->toBe('token:' . tenant()->getTenantKey());
})->with([
'domain identification' => ['middleware' => InitializeTenancyByDomain::class, 'domain' => 'foo.test'],
'subdomain identification' => ['middleware' => InitializeTenancyBySubdomain::class, 'domain' => 'foo'],