diff --git a/assets/TenancyServiceProvider.stub.php b/assets/TenancyServiceProvider.stub.php index 4be342ee..27237520 100644 --- a/assets/TenancyServiceProvider.stub.php +++ b/assets/TenancyServiceProvider.stub.php @@ -238,11 +238,13 @@ class TenancyServiceProvider extends ServiceProvider protected function mapRoutes() { - if (file_exists(base_path('routes/tenant.php'))) { + $this->app->booted(function () { + if (file_exists(base_path('routes/tenant.php'))) { RouteFacade::namespace(static::$controllerNamespace) - ->middleware('tenant') - ->group(base_path('routes/tenant.php')); - } + ->middleware('tenant') + ->group(base_path('routes/tenant.php')); + } + }); } protected function makeTenancyMiddlewareHighestPriority() diff --git a/assets/config.php b/assets/config.php index 5b55fa66..cd03a068 100644 --- a/assets/config.php +++ b/assets/config.php @@ -37,8 +37,7 @@ return [ * Only relevant if you're using the domain or subdomain identification middleware. */ 'central_domains' => [ - '127.0.0.1', - 'localhost', + str(env('APP_URL'))->after('://')->before('/')->toString(), ], 'identification' => [ @@ -121,17 +120,28 @@ return [ * To configure their behavior, see the config keys below. */ 'bootstrappers' => [ + // Basic Laravel features Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper::class, + Stancl\Tenancy\Bootstrappers\PrefixCacheTenancyBootstrapper::class, + // Stancl\Tenancy\Bootstrappers\CacheTagsBootstrapper::class, // Alternative to PrefixCacheTenancyBootstrapper Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper::class, + // Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed + + // Support for edge cases + Stancl\Tenancy\Bootstrappers\SessionTenancyBootstrapper::class, Stancl\Tenancy\Bootstrappers\BatchTenancyBootstrapper::class, - // Stancl\Tenancy\Bootstrappers\PrefixCacheTenancyBootstrapper::class, + + // Configurable bootstrappers // Stancl\Tenancy\Bootstrappers\RootUrlBootstrapper::class, // Stancl\Tenancy\Bootstrappers\UrlGeneratorBootstrapper::class, + // Stancl\Tenancy\Bootstrappers\MailTenancyBootstrapper::class, // Note: Queueing mail requires using QueueTenancyBootstrapper with $forceRefresh set to true + // Stancl\Tenancy\Bootstrappers\BroadcastingConfigBootstrapper::class, + // Stancl\Tenancy\Bootstrappers\BroadcastingChannelPrefixBootstrapper::class, + + // Integration bootstrappers // Stancl\Tenancy\Bootstrappers\Integrations\FortifyRouteTenancyBootstrapper::class, - // Stancl\Tenancy\Bootstrappers\SessionTenancyBootstrapper::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 + // Stancl\Tenancy\Bootstrappers\Integrations\ScoutTenancyBootstrapper::class, ], diff --git a/src/Bootstrappers/BatchTenancyBootstrapper.php b/src/Bootstrappers/BatchTenancyBootstrapper.php index 589bdac0..52a50ef6 100644 --- a/src/Bootstrappers/BatchTenancyBootstrapper.php +++ b/src/Bootstrappers/BatchTenancyBootstrapper.php @@ -10,6 +10,7 @@ use Illuminate\Database\DatabaseManager; use Stancl\Tenancy\Contracts\TenancyBootstrapper; use Stancl\Tenancy\Contracts\Tenant; +// todo add docblock class BatchTenancyBootstrapper implements TenancyBootstrapper { /** diff --git a/src/Bootstrappers/CacheTagsBootstrapper.php b/src/Bootstrappers/CacheTagsBootstrapper.php index b9fdb0c3..aabbc8f8 100644 --- a/src/Bootstrappers/CacheTagsBootstrapper.php +++ b/src/Bootstrappers/CacheTagsBootstrapper.php @@ -10,6 +10,8 @@ use Illuminate\Support\Facades\Cache; use Stancl\Tenancy\Contracts\TenancyBootstrapper; use Stancl\Tenancy\Contracts\Tenant; +// todo@rename some bootstrappers end in TenancyBootstrapper and others don't - make this consistent or make the difference clear + /** * todo@name rename? * diff --git a/src/Bootstrappers/SessionTenancyBootstrapper.php b/src/Bootstrappers/SessionTenancyBootstrapper.php index 438d6db5..80c657a0 100644 --- a/src/Bootstrappers/SessionTenancyBootstrapper.php +++ b/src/Bootstrappers/SessionTenancyBootstrapper.php @@ -30,14 +30,18 @@ class SessionTenancyBootstrapper implements TenancyBootstrapper public function bootstrap(Tenant $tenant): void { - $this->resetDatabaseHandler(); + if ($this->config->get('session.driver') === 'database') { + $this->resetDatabaseHandler(); + } } public function revert(): void { - // When ending tenancy, this runs *before* the DatabaseTenancyBootstrapper, so DB tenancy - // is still bootstrapped. For that reason, we have to explicitly use the central connection - $this->resetDatabaseHandler(config('tenancy.database.central_connection')); + if ($this->config->get('session.driver') === 'database') { + // When ending tenancy, this runs *before* the DatabaseTenancyBootstrapper, so DB tenancy + // is still bootstrapped. For that reason, we have to explicitly use the central connection + $this->resetDatabaseHandler(config('tenancy.database.central_connection')); + } } protected function resetDatabaseHandler(string $defaultConnection = null): void diff --git a/tests/TestCase.php b/tests/TestCase.php index 1d7cc043..c0f7f446 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -116,6 +116,7 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase '--realpath' => true, '--force' => true, ], + 'tenancy.central_domains' => ['localhost', '127.0.0.1'], 'tenancy.bootstrappers' => [ DatabaseTenancyBootstrapper::class, FilesystemTenancyBootstrapper::class,