コード例 #1
0
 /**
  * @param OrmResultBefore $event
  */
 public function onResultBefore(OrmResultBefore $event)
 {
     $config = $event->getDatagrid()->getConfig();
     if (!$config->isDatasourceSkipAclApply()) {
         $this->aclHelper->apply($event->getQuery());
     }
 }
コード例 #2
0
 /**
  * @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());
     }
 }
コード例 #3
0
 /**
  * @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);
     }
 }
コード例 #4
0
 public function testOnResultBeforeSkipForBackendUser()
 {
     $this->securityfacade->expects($this->once())->method('getLoggedUser')->willReturn(new User());
     $this->event->expects($this->never())->method('getQuery');
     $this->event->expects($this->never())->method('getDatagrid');
     $this->metadataProvider->expects($this->never())->method('getMetadata');
     $this->listener->onResultBefore($this->event);
 }