'tenant_property', * ] */ public static array $credentialsMap = [ 'mail.mailers.smtp.transport' => 'smtp_transport', 'mail.mailers.smtp.host' => 'smtp_host', 'mail.mailers.smtp.port' => 'smtp_port', 'mail.mailers.smtp.encryption' => 'smtp_encryption', 'mail.mailers.smtp.username' => 'smtp_username', 'mail.mailers.smtp.password' => 'smtp_password', 'mail.mailers.smtp.timeout' => 'smtp_timeout', 'mail.mailers.smtp.local_domain' => 'smtp_local_domain', ]; public function __construct(protected Repository $config) { } public function bootstrap(Tenant $tenant): void { $this->setConfig($tenant); } public function revert(): void { $this->unsetConfig(); } protected function setConfig(Tenant $tenant) { foreach (static::$credentialsMap as $configKey => $storageKey) { $override = $tenant->$storageKey; if (array_key_exists($storageKey, $tenant->getAttributes())) { $this->originalConfig[$configKey] ??= $this->config->get($configKey); $this->config->set($configKey, $override); } } } protected function unsetConfig() { foreach ($this->originalConfig as $key => $value) { $this->config->set($key, $value); } } }