diff --git a/assets/TenancyServiceProvider.stub.php b/assets/TenancyServiceProvider.stub.php index a38aee42..09516c2b 100644 --- a/assets/TenancyServiceProvider.stub.php +++ b/assets/TenancyServiceProvider.stub.php @@ -118,7 +118,20 @@ class TenancyServiceProvider extends ServiceProvider public function register() { - // + /** + * Example of CLI tenant URL root override: + * + * UrlTenancyBootstrapper::$rootUrlOverride = function (Tenant $tenant) { + * $baseUrl = URL::to('/'); + * $scheme = str($baseUrl)->before('://') . '://'; + * + * return str($baseUrl) + * ->after($scheme) + * ->prepend($tenant->getTenantKey() . '.') + * ->prepend($scheme) + * ->toString(); + *}; + */ } public function boot() diff --git a/assets/config.php b/assets/config.php index fab224db..b71dec58 100644 --- a/assets/config.php +++ b/assets/config.php @@ -102,6 +102,7 @@ return [ Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\BatchTenancyBootstrapper::class, + // Stancl\Tenancy\Bootstrappers\UrlTenancyBootstrapper::class, // Stancl\Tenancy\Bootstrappers\MailTenancyBootstrapper::class, // Queueing mail requires using QueueTenancyBootstrapper with $forceRefresh set to true // Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed ], diff --git a/src/Bootstrappers/UrlTenancyBootstrapper.php b/src/Bootstrappers/UrlTenancyBootstrapper.php new file mode 100644 index 00000000..0ffea6ef --- /dev/null +++ b/src/Bootstrappers/UrlTenancyBootstrapper.php @@ -0,0 +1,34 @@ +originalRootUrl = $this->urlGenerator->to('/'); + + if (static::$rootUrlOverride) { + $this->urlGenerator->forceRootUrl((static::$rootUrlOverride)($tenant)); + } + } + + public function revert(): void + { + $this->urlGenerator->forceRootUrl($this->originalRootUrl); + } +}