123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- declare(strict_types=1);
- use App\Models\Tenant;
- use Stancl\Tenancy\Database\Models\Domain;
- return [
- 'tenant_model' => Tenant::class,
- 'id_generator' => Stancl\Tenancy\UUIDGenerator::class,
- 'domain_model' => Domain::class,
- /**
- * The list of domains hosting your central app.
- *
- * Only relevant if you're using the domain or subdomain identification middleware.
- */
- 'central_domains' => [
- '127.0.0.1',
- 'localhost',
- ],
- /**
- * Tenancy bootstrappers are executed when tenancy is initialized.
- * Their responsibility is making Laravel features tenant-aware.
- *
- * To configure their behavior, see the config keys below.
- */
- 'bootstrappers' => [
- Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper::class,
- Stancl\Tenancy\Bootstrappers\CacheTenancyBootstrapper::class,
- Stancl\Tenancy\Bootstrappers\FilesystemTenancyBootstrapper::class,
- Stancl\Tenancy\Bootstrappers\QueueTenancyBootstrapper::class,
- Stancl\Tenancy\Bootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed
- ],
- /**
- * Database tenancy config. Used by DatabaseTenancyBootstrapper.
- */
- 'database' => [
- 'central_connection' => env('CENTRAL_DB_CONNECTION', 'central'),
- /**
- * Connection used as a "template" for the dynamically created tenant database connection.
- * Note: don't name your template connection tenant. That name is reserved by package.
- */
- 'template_tenant_connection' => env('CENTRAL_DB_CONNECTION', 'central'),
- /**
- * Tenant database names are created like this:
- * prefix + tenant_id + suffix.
- */
- 'prefix' => 'tenant_',
- 'suffix' => '',
- /**
- * TenantDatabaseManagers are classes that handle the creation & deletion of tenant databases.
- */
- 'managers' => [
- 'sqlite' => Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager::class,
- 'mysql' => Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager::class,
- 'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager::class,
- /**
- * Use this database manager for MySQL to have a DB user created for each tenant database.
- * You can customize the grants given to these users by changing the $grants property.
- */
- // 'mysql' => Stancl\Tenancy\TenantDatabaseManagers\PermissionControlledMySQLDatabaseManager::class,
- /**
- * Disable the pgsql manager above, and enable the one below if you
- * want to separate tenant DBs by schemas rather than databases.
- */
- // 'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLSchemaManager::class, // Separate by schema instead of database
- ],
- ],
- /**
- * Cache tenancy config. Used by CacheTenancyBootstrapper.
- *
- * This works for all Cache facade calls, cache() helper
- * calls and direct calls to injected cache stores.
- *
- * Each key in cache will have a tag applied on it. This tag is used to
- * scope the cache both when writing to it and when reading from it.
- *
- * You can clear cache selectively by specifying the tag.
- */
- 'cache' => [
- 'tag_base' => 'tenant', // This tag_base, followed by the tenant_id, will form a tag that will be applied on each cache call.
- ],
- /**
- * Filesystem tenancy config. Used by FilesystemTenancyBootstrapper.
- * https://tenancyforlaravel.com/docs/v3/tenancy-bootstrappers/#filesystem-tenancy-boostrapper.
- */
- 'filesystem' => [
- /**
- * Each disk listed in the 'disks' array will be suffixed by the suffix_base, followed by the tenant_id.
- */
- 'suffix_base' => 'tenant',
- 'disks' => [
- 'local',
- 'public',
- // 's3',
- ],
- /**
- * Use this for local disks.
- *
- * See https://tenancyforlaravel.com/docs/v3/tenancy-bootstrappers/#filesystem-tenancy-boostrapper
- */
- 'root_override' => [
- // Disks whose roots should be overridden after storage_path() is suffixed.
- 'local' => '%storage_path%/app/',
- 'public' => '%storage_path%/app/public/',
- ],
- /**
- * Should storage_path() be suffixed.
- *
- * Note: Disabling this will likely break local disk tenancy. Only disable this if you're using an external file storage service like S3.
- *
- * For the vast majority of applications, this feature should be enabled. But in some
- * edge cases, it can cause issues (like using Passport with Vapor - see #196), so
- * you may want to disable this if you are experiencing these edge case issues.
- */
- 'suffix_storage_path' => true,
- /**
- * By default, asset() calls are made multi-tenant too. You can use global_asset() and mix()
- * for global, non-tenant-specific assets. However, you might have some issues when using
- * packages that use asset() calls inside the tenant app. To avoid such issues, you can
- * disable asset() helper tenancy and explicitly use tenant_asset() calls in places
- * where you want to use tenant-specific assets (product images, avatars, etc).
- */
- 'asset_helper_tenancy' => true,
- ],
- /**
- * Redis tenancy config. Used by RedisTenancyBootstrapper.
- *
- * Note: You need phpredis to use Redis tenancy.
- *
- * Note: You don't need to use this if you're using Redis only for cache.
- * Redis tenancy is only relevant if you're making direct Redis calls,
- * either using the Redis facade or by injecting it as a dependency.
- */
- 'redis' => [
- 'prefix_base' => 'tenant', // Each key in Redis will be prepended by this prefix_base, followed by the tenant id.
- 'prefixed_connections' => [ // Redis connections whose keys are prefixed, to separate one tenant's keys from another.
- 'cache',
- ],
- ],
- /**
- * Features are classes that provide additional functionality
- * not needed for tenancy to be bootstrapped. They are run
- * regardless of whether tenancy has been initialized.
- *
- * See the documentation page for each class to
- * understand which ones you want to enable.
- */
- 'features' => [
- // Stancl\Tenancy\Features\UserImpersonation::class,
- Stancl\Tenancy\Features\TelescopeTags::class,
- // Stancl\Tenancy\Features\UniversalRoutes::class,
- // Stancl\Tenancy\Features\TenantConfig::class, // https://tenancyforlaravel.com/docs/v3/features/tenant-config
- // Stancl\Tenancy\Features\CrossDomainRedirect::class, // https://tenancyforlaravel.com/docs/v3/features/cross-domain-redirect
- // Stancl\Tenancy\Features\ViteBundler::class,
- ],
- /**
- * Should tenancy routes be registered.
- *
- * Tenancy routes include tenant asset routes. By default, this route is
- * enabled. But it may be useful to disable them if you use external
- * storage (e.g. S3 / Dropbox) or have a custom asset controller.
- */
- 'routes' => true,
- /**
- * Parameters used by the tenants:migrate command.
- */
- 'migration_parameters' => [
- '--force' => true, // This needs to be true to run migrations in production.
- '--path' => [database_path('migrations/tenant')],
- '--realpath' => true,
- ],
- /**
- * Parameters used by the tenants:seed command.
- */
- 'seeder_parameters' => [
- '--class' => 'DatabaseSeeder', // root seeder class
- // '--force' => true,
- ],
- /**
- * init Tenancy middleware.
- * domain or requestData
- *
- */
- 'init_tenant_middleware' => env('INIT_TENANT_MIDDLEWARE', 'domain')
- ];
|