configWriter = $configWriter; $this->deploymentConfig = $deploymentConfig; } /** * @inheritdoc */ public function getDomains(): array { return array_map('strtolower', $this->deploymentConfig->get(self::PARAM_DOWNLOADABLE_DOMAINS) ?? []); } /** * @inheritdoc */ public function addDomains(array $hosts): void { $whitelist = $this->getDomains(); foreach (array_map('strtolower', $hosts) as $host) { if (!in_array($host, $whitelist)) { $whitelist[] = $host; } } $this->configWriter->saveConfig( [ ConfigFilePool::APP_ENV => [ self::PARAM_DOWNLOADABLE_DOMAINS => $whitelist ] ], true ); } /** * @inheritdoc */ public function removeDomains(array $hosts): void { $whitelist = $this->getDomains(); foreach (array_map('strtolower', $hosts) as $host) { if (in_array($host, $whitelist)) { $index = array_search($host, $whitelist); unset($whitelist[$index]); } } $whitelist = array_values($whitelist); // reindex whitelist to prevent non-sequential keying $this->configWriter->saveConfig( [ ConfigFilePool::APP_ENV => [ self::PARAM_DOWNLOADABLE_DOMAINS => $whitelist ] ], true ); } }