security = $security; } public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void { error_log('applyToCollection'); $this->addWhere($queryBuilder, $resourceClass); } /*public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = []): void { error_log('applyToItem'); $this->addWhere($queryBuilder, $resourceClass); }*/ private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void { error_log('addWhere'); if (CDocument::class !== $resourceClass || $this->security->isGranted('ROLE_ADMIN') || null === $user = $this->security->getUser() ) { return; } error_log('here!'); $rootAlias = $queryBuilder->getRootAliases()[0]; $queryBuilder ->innerJoin("$rootAlias.resourceNode", 'node') ->innerJoin('node.resourceLinks', 'links') ; $queryBuilder ->andWhere('links.visibility != :visibilityDeleted') ->setParameter('visibilityDeleted', ResourceLink::VISIBILITY_DELETED) ; $queryBuilder ->andWhere('links.visibility != :visibilityDraft') ->setParameter('visibilityDraft', ResourceLink::VISIBILITY_DRAFT) ; /*$queryBuilder-> andWhere('node.creator = :current_user') ;*/ //$queryBuilder->andWhere(sprintf('%s.node.creator = :current_user', $rootAlias)); //$queryBuilder->setParameter('current_user', $user->getId()); } }