From 31055aa9d60f853afe59ee9da894bd506765dd1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Fri, 4 Oct 2019 22:39:53 +0200 Subject: [PATCH] Tenant config --- docs/navigation.php | 1 + docs/source/v2/tenant-config.md | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 docs/source/v2/tenant-config.md diff --git a/docs/navigation.php b/docs/navigation.php index 1d6d106..1677136 100644 --- a/docs/navigation.php +++ b/docs/navigation.php @@ -76,6 +76,7 @@ return [ 'url' => 'digging-deeper', 'children' => [ 'Tenants' => 'tenants', + 'Tenant Config' => 'tenant-config', 'Middleware Configuration' => 'middleware-configuration', 'Custom Database Names' => 'custom-database-names', 'Filesystem Tenancy' => 'filesystem-tenancy', diff --git a/docs/source/v2/tenant-config.md b/docs/source/v2/tenant-config.md new file mode 100644 index 0000000..8bdf0bf --- /dev/null +++ b/docs/source/v2/tenant-config.md @@ -0,0 +1,34 @@ +--- +title: Tenant Config +description: Tenant Config +extends: _layouts.documentation +section: content +--- + +# Tenant Config {#tenant-config} + +It's likely you will need to use tenant-specific config in your application. That config could be API keys, things like "products per page" and many other things. + +You could just use the [tenant storage]({{ $page->link('tenant-storage') }}) to get these values, but you may still want to use Laravel's `config()` because of: +- separation of concerns -- if you just write tenancy implementation-agnostic `config('shop.products_per_page')`, you will have a much better time changing tenancy implementations +- default values -- you may want to use the tenant storage only to override values in your config file + +## Enabling the feature + +Uncomment the following line in your `tenancy.features` config: +```php +// Stancl\Tenancy\Features\TenantConfig::class, +``` + +## Configuring the mappings + +This feature maps keys in the tenant storage to config keys based on the `tenancy.storage_to_config_map` config. + +For example, if your `storage_to_config_map` looked like this: +```php +'storage_to_config_map' => [ + 'paypal_api_key' => 'services.paypal.api_key', +], +``` + +the value of `paypal_api_key` in [tenant storage]({{ $page->link('tenant-storage') }}) would be copied to the `services.paypal.api_key` config when tenancy is initialized.