diff --git a/assets/config.php b/assets/config.php index 3778e107..3bd68b97 100644 --- a/assets/config.php +++ b/assets/config.php @@ -283,6 +283,9 @@ return [ // Stancl\Tenancy\Features\TelescopeTags::class, // Stancl\Tenancy\Features\UniversalRoutes::class, // Stancl\Tenancy\Features\TenantConfig::class, // https://tenancyforlaravel.com/docs/v3/features/tenant-config + ], + + 'tenant_unaware_features' => [ // Stancl\Tenancy\Features\CrossDomainRedirect::class, // https://tenancyforlaravel.com/docs/v3/features/cross-domain-redirect ], diff --git a/src/Features/UniversalRoutes.php b/src/Features/UniversalRoutes.php index b0f8c757..65313179 100644 --- a/src/Features/UniversalRoutes.php +++ b/src/Features/UniversalRoutes.php @@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Route as Router; use Stancl\Tenancy\Contracts\Feature; use Stancl\Tenancy\Middleware; +// todo this got deleted in v4. class UniversalRoutes implements Feature { public static string $middlewareGroup = 'universal'; diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index 3a27c5da..3e124bd5 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -27,7 +27,13 @@ class TenancyServiceProvider extends ServiceProvider // Make sure Tenancy is stateful. $this->app->singleton(Tenancy::class); - foreach ($this->app['config']['tenancy.features'] ?? [] as $feature) { + $this->app->resolving(Tenancy::class, function (Tenancy $tenancy, $app) { + foreach ($this->app['config']['tenancy.features'] ?? [] as $feature) { + $this->app[$feature]->bootstrap(); + } + }); + + foreach ($this->app['config']['tenancy.tenant_unaware_features'] ?? [] as $feature) { $this->app[$feature]->bootstrap(); } diff --git a/tests/Features/RedirectTest.php b/tests/Features/RedirectTest.php index a9ea92fa..9dfcb1ca 100644 --- a/tests/Features/RedirectTest.php +++ b/tests/Features/RedirectTest.php @@ -8,7 +8,7 @@ use Stancl\Tenancy\Tests\Etc\Tenant; test('tenant redirect macro replaces only the hostname', function () { config([ - 'tenancy.features' => [CrossDomainRedirect::class], + 'tenancy.tenant_unaware_features' => [CrossDomainRedirect::class], ]); Route::get('/foobar', function () { @@ -37,7 +37,7 @@ test('tenant route helper generates correct url', function () { test('redirect from central to tenant works fine', function () { config([ - 'tenancy.features' => [CrossDomainRedirect::class], + 'tenancy.tenant_unaware_features' => [CrossDomainRedirect::class], ]); Route::get('/foobar', function () {