selectManager->hasInheritedAccessMethod() && $queryBuilder instanceof OrmSelectBuilder ) { $this->selectManager->applyAccessToQueryBuilder($queryBuilder); return; } $this->applyMandatoryFilter($queryBuilder); $accessControlFilterResolver = $this->accessControlFilterResolverFactory ->create($this->entityType, $this->user); $filterName = $accessControlFilterResolver->resolve(); if (!$filterName) { return; } // For backward compatibility. if ( $this->selectManager->hasInheritedAccessFilterMethod($filterName) && $queryBuilder instanceof OrmSelectBuilder ) { $this->selectManager->applyAccessFilterToQueryBuilder($queryBuilder, $filterName); return; } if ($this->accessControlFilterFactory->has($this->entityType, $filterName)) { $filter = $this->accessControlFilterFactory ->create($this->entityType, $this->user, $filterName); $filter->apply($queryBuilder); return; } throw new RuntimeException("No access filter '{$filterName}' for '{$this->entityType}'."); } private function applyMandatoryFilter(QueryBuilder $queryBuilder): void { $filter = $this->accessControlFilterFactory ->create($this->entityType, $this->user, 'mandatory'); $filter->apply($queryBuilder); } }