|
9 | 9 | namespace Ibexa\Bundle\AdminUi\Controller\SiteAccess; |
10 | 10 |
|
11 | 11 | use Ibexa\AdminUi\REST\Value\SiteAccess\SiteAccessesList; |
12 | | -use Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface; |
13 | 12 | use Ibexa\Contracts\Core\Repository\Values\Content\Location; |
14 | 13 | use Ibexa\Rest\Server\Controller as RestController; |
| 14 | +use Ibexa\Rest\Server\Exceptions\BadRequestException; |
| 15 | +use Psr\Container\NotFoundExceptionInterface; |
| 16 | +use Symfony\Component\DependencyInjection\ServiceLocator; |
| 17 | +use Symfony\Component\HttpFoundation\Request; |
15 | 18 |
|
16 | 19 | final class SiteAccessController extends RestController |
17 | 20 | { |
18 | | - private SiteaccessResolverInterface $nonAdminSiteAccessResolver; |
| 21 | + private ServiceLocator $siteAccessResolvers; |
19 | 22 |
|
20 | | - public function __construct(SiteaccessResolverInterface $nonAdminSiteAccessResolver) |
21 | | - { |
22 | | - $this->nonAdminSiteAccessResolver = $nonAdminSiteAccessResolver; |
| 23 | + public function __construct( |
| 24 | + ServiceLocator $siteAccessResolvers |
| 25 | + ) { |
| 26 | + $this->siteAccessResolvers = $siteAccessResolvers; |
23 | 27 | } |
24 | 28 |
|
25 | | - public function loadForLocation(Location $location, string $resolverType = 'non_admin'): SiteAccessesList |
| 29 | + /** |
| 30 | + * @throws \Psr\Container\ContainerExceptionInterface |
| 31 | + * @throws \Psr\Container\NotFoundExceptionInterface |
| 32 | + */ |
| 33 | + public function loadForLocation(Request $request, Location $location): SiteAccessesList |
26 | 34 | { |
27 | | - switch ($resolverType) { |
28 | | - default: $siteAccesses = $this->nonAdminSiteAccessResolver->getSiteAccessesListForLocation($location); |
| 35 | + $resolverType = $request->query->get('resolver_type', 'non_admin'); |
| 36 | + |
| 37 | + try { |
| 38 | + /** @var \Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface $siteAccessResolver */ |
| 39 | + $siteAccessResolver = $this->siteAccessResolvers->get($resolverType); |
| 40 | + } catch (NotFoundExceptionInterface $e) { |
| 41 | + throw new BadRequestException($e->getMessage(), $e->getCode(), $e); |
29 | 42 | } |
30 | 43 |
|
31 | | - return new SiteAccessesList($siteAccesses); |
| 44 | + return new SiteAccessesList($siteAccessResolver->getSiteAccessesListForLocation($location)); |
32 | 45 | } |
33 | 46 | } |
0 commit comments