Created a config prost-processor which adds the base path on every applicable configuration

This commit is contained in:
Alejandro Celaya
2019-09-13 20:03:53 +02:00
parent 76541d5563
commit d7a3aeb0a2
5 changed files with 52 additions and 4 deletions

View File

@@ -0,0 +1,39 @@
<?php
declare(strict_types=1);
namespace Shlinkio\Shlink\Core\Config;
use function Functional\map;
class BasePathPrefixer
{
public function __invoke(array $config): array
{
$basePath = $config['router']['base_path'] ?? '';
$config['routes'] = $this->prefixRoutesWithBasePath($config, $basePath);
$config['middleware_pipeline'] = $this->prefixMiddlewarePathsWithBasePath($config, $basePath);
$config['url_shortener']['domain']['hostname'] .= $basePath;
return $config;
}
private function prefixRoutesWithBasePath(array $config, string $basePath): array
{
return map($config['routes'] ?? [], function (array $route) use ($basePath) {
$route['path'] = $basePath . $route['path'];
return $route;
});
}
private function prefixMiddlewarePathsWithBasePath(array $config, string $basePath): array
{
return map($config['middleware_pipeline'] ?? [], function (array $middleware) use ($basePath) {
if (! isset($middleware['path'])) {
return $middleware;
}
$middleware['path'] = $basePath . $middleware['path'];
return $middleware;
});
}
}