From 36afb7dbddce3f1d2e0d8c55b6ddc65bba923b8b Mon Sep 17 00:00:00 2001 From: Abrar Ahmad Date: Wed, 23 Nov 2022 10:03:25 +0500 Subject: [PATCH] wip --- assets/config.php | 3 +++ src/Features/CrossDomainRedirect.php | 5 +++++ src/TenancyServiceProvider.php | 4 ++++ tests/Features/RedirectTest.php | 17 +++++++++++++++++ 4 files changed, 29 insertions(+) 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/CrossDomainRedirect.php b/src/Features/CrossDomainRedirect.php index a48be6ea..ee4bf1d7 100644 --- a/src/Features/CrossDomainRedirect.php +++ b/src/Features/CrossDomainRedirect.php @@ -10,6 +10,11 @@ use Stancl\Tenancy\Tenancy; class CrossDomainRedirect implements Feature { + public function __construct(protected Tenancy $tenancy) + { + dd($this->tenancy); + } + public function bootstrap(Tenancy $tenancy): void { RedirectResponse::macro('domain', function (string $domain) { diff --git a/src/TenancyServiceProvider.php b/src/TenancyServiceProvider.php index ded96f35..f4e18dba 100644 --- a/src/TenancyServiceProvider.php +++ b/src/TenancyServiceProvider.php @@ -36,6 +36,10 @@ class TenancyServiceProvider extends ServiceProvider return $tenancy; }); + foreach ($this->app['config']['tenancy.tenant_unaware_features'] ?? [] as $feature) { + $this->app[$feature]->bootstrap(); + } + // Make it possible to inject the current tenant by typehinting the Tenant contract. $this->app->bind(Tenant::class, function ($app) { return $app[Tenancy::class]->tenant; diff --git a/tests/Features/RedirectTest.php b/tests/Features/RedirectTest.php index 7aca2e92..db673f99 100644 --- a/tests/Features/RedirectTest.php +++ b/tests/Features/RedirectTest.php @@ -34,3 +34,20 @@ test('tenant route helper generates correct url', function () { expect(tenant_route('foo.localhost', 'foo', ['a' => 'as', 'b' => 'df']))->toBe('http://foo.localhost/abcdef/as/df'); expect(tenant_route('foo.localhost', 'foo', []))->toBe('http://foo.localhost/abcdef'); }); + +test('redirect from central to tenant works fine', function () { + config([ + 'tenancy.features' => [CrossDomainRedirect::class], + ]); + + Route::get('/foobar', function () { + return 'Foo'; + })->name('home'); + + Route::get('/redirect', function () { + return redirect()->route('home')->domain('abcd'); + }); + + pest()->get('/redirect') + ->assertRedirect('http://abcd/foobar'); +});