|
|
@@ -17,23 +17,25 @@ use Symfony\Component\Security\Core\Security;
|
|
|
final class AccessExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface
|
|
|
{
|
|
|
private Security $security;
|
|
|
+ private HandleAccessExtension $handleAccessExtension;
|
|
|
|
|
|
- public function __construct(Security $security)
|
|
|
+ public function __construct(Security $security, HandleAccessExtension $handleAccessExtension)
|
|
|
{
|
|
|
$this->security = $security;
|
|
|
+ $this->handleAccessExtension = $handleAccessExtension;
|
|
|
}
|
|
|
|
|
|
public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void
|
|
|
{
|
|
|
- $this->addWhere($queryBuilder, $resourceClass);
|
|
|
+ $this->addWhere($queryBuilder, $resourceClass, $operationName);
|
|
|
}
|
|
|
|
|
|
public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = []): void
|
|
|
{
|
|
|
- $this->addWhere($queryBuilder, $resourceClass);
|
|
|
+ $this->addWhere($queryBuilder, $resourceClass, $operationName);
|
|
|
}
|
|
|
|
|
|
- private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void
|
|
|
+ private function addWhere(QueryBuilder $queryBuilder, string $resourceClass, string $operationName): void
|
|
|
{
|
|
|
if (Access::class !== $resourceClass) {
|
|
|
return;
|
|
|
@@ -45,5 +47,6 @@ final class AccessExtension implements QueryCollectionExtensionInterface, QueryI
|
|
|
$queryBuilder->andWhere(sprintf('%s.organization = :current_organization', $rootAlias));
|
|
|
$queryBuilder->setParameter('current_organization', $currentUser->getOrganization());
|
|
|
|
|
|
+ $this->handleAccessExtension->addWhere($queryBuilder, $operationName);
|
|
|
}
|
|
|
}
|