/** * @param OrmResultBefore $event */ public function onResultBefore(OrmResultBefore $event) { $config = $event->getDatagrid()->getConfig(); if (!$config->offsetGetByPath(Builder::DATASOURCE_SKIP_ACL_CHECK, false)) { $this->aclHelper->apply($event->getQuery()); } }
/** * @param OrmResultBefore $event */ public function onResultBefore(OrmResultBefore $event) { $config = $event->getDatagrid()->getConfig(); if (!$config->isDatasourceSkipAclApply()) { $this->aclHelper->apply($event->getQuery()); } }
/** * @param OrmResultBefore $event */ public function onResultBefore(OrmResultBefore $event) { // listener logic is applied only to frontend part of application if ($this->securityFacade->getLoggedUser() instanceof User) { return; } $config = $event->getDatagrid()->getConfig(); $query = $event->getQuery(); /** @var Subselect|SelectStatement $select */ $select = $query->getAST(); $fromClause = $select instanceof SelectStatement ? $select->fromClause : $select->subselectFromClause; $skipAclCheck = true; /** @var IdentificationVariableDeclaration $identificationVariableDeclaration */ foreach ($fromClause->identificationVariableDeclarations as $identificationVariableDeclaration) { $entityName = $identificationVariableDeclaration->rangeVariableDeclaration->abstractSchemaName; $metadata = $this->metadataProvider->getMetadata($entityName); if ($metadata->hasOwner()) { $skipAclCheck = false; break; } } if ($skipAclCheck) { $config->offsetSetByPath(Builder::DATASOURCE_SKIP_ACL_CHECK, true); } }