Skip to content

Commit 480f1d1

Browse files
committed
Used tagged locator
1 parent 558b550 commit 480f1d1

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

src/bundle/Controller/SiteAccess/SiteAccessController.php

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,38 @@
99
namespace Ibexa\Bundle\AdminUi\Controller\SiteAccess;
1010

1111
use Ibexa\AdminUi\REST\Value\SiteAccess\SiteAccessesList;
12-
use Ibexa\AdminUi\Siteaccess\SiteaccessResolverInterface;
1312
use Ibexa\Contracts\Core\Repository\Values\Content\Location;
1413
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;
1518

1619
final class SiteAccessController extends RestController
1720
{
18-
private SiteaccessResolverInterface $nonAdminSiteAccessResolver;
21+
private ServiceLocator $siteAccessResolvers;
1922

20-
public function __construct(SiteaccessResolverInterface $nonAdminSiteAccessResolver)
21-
{
22-
$this->nonAdminSiteAccessResolver = $nonAdminSiteAccessResolver;
23+
public function __construct(
24+
ServiceLocator $siteAccessResolvers
25+
) {
26+
$this->siteAccessResolvers = $siteAccessResolvers;
2327
}
2428

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
2634
{
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);
2942
}
3043

31-
return new SiteAccessesList($siteAccesses);
44+
return new SiteAccessesList($siteAccessResolver->getSiteAccessesListForLocation($location));
3245
}
3346
}

src/bundle/Resources/config/services/controllers.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ services:
270270
parent: Ibexa\Rest\Server\Controller
271271
autowire: true
272272
arguments:
273-
$nonAdminSiteAccessResolver: '@Ibexa\AdminUi\Siteaccess\NonAdminSiteaccessResolver'
273+
$siteAccessResolvers: !tagged_locator
274+
tag: 'ibexa.site_access.resolver'
275+
index_by: type
274276
tags:
275277
- controller.service_arguments

src/bundle/Resources/config/services/siteaccess.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ services:
1818
Ibexa\AdminUi\Siteaccess\NonAdminSiteaccessResolver:
1919
arguments:
2020
$siteAccessGroups: '%ibexa.site_access.groups%'
21+
tags:
22+
- { name: 'ibexa.site_access.resolver', type: 'non_admin' }
2123

2224
Ibexa\AdminUi\Siteaccess\AdminSiteaccessPreviewVoter:
2325
arguments:

0 commit comments

Comments
 (0)