public function read(ReadEventArgs $eventArgs) { $accessController = $this->getAccessController(); $metadata = $eventArgs->getMetadata(); $result = $accessController->areAllowed([Actions::READ], $metadata); if ($result->hasCriteria()) { if ($result->getAllowed()) { $criteria = $result->getNew(); } else { $criteria = []; foreach ($result->getNew() as $field => $value) { if (isset($value['$regex'])) { $criteria[$field] = ['$not' => $value]; } else { $criteria[$field] = ['$ne' => $value]; } } } } else { if ($result->getAllowed()) { $criteria = []; //allow read } else { $eventArgs->setReject(true); $criteria = [$metadata->identifier => ['$exists' => false]]; //deny read } } $eventArgs->addCriteria($criteria); }
public function read(ReadEventArgs $eventArgs) { $metadata = $eventArgs->getMetadata(); $freezeMetadata = $metadata->getFreeze(); if (!isset($freezeMetadata) || !$freezeMetadata['flag']) { return; } $readFilter = $this->serviceLocator->get('extension.freeze')->getReadFilter(); if ($readFilter == Extension::READ_ALL) { return; } elseif ($readFilter == Extension::READ_ONLY_FROZEN) { $criteria = [$freezeMetadata['flag'] => true]; } elseif ($readFilter == Extension::READ_ONLY_NOT_FROZEN) { $criteria = [$freezeMetadata['flag'] => false]; } $eventArgs->addCriteria($criteria); }
public function read(ReadEventArgs $eventArgs) { $metadata = $eventArgs->getMetadata(); $softDeleteMetadata = $metadata->getSoftDelete(); if (!isset($softDeleteMetadata) || !$softDeleteMetadata['flag']) { return; } $readFilter = $this->serviceLocator->get('extension.softdelete')->getReadFilter(); if ($readFilter == Extension::READ_ALL) { return; } elseif ($readFilter == Extension::READ_ONLY_SOFT_DELETED) { $criteria = [$softDeleteMetadata['flag'] => true]; } elseif ($readFilter == Extension::READ_ONLY_NOT_SOFT_DELETED) { $criteria = [$softDeleteMetadata['flag'] => false]; } $eventArgs->addCriteria($criteria); }
public function read(ReadEventArgs $eventArgs) { $metadata = $eventArgs->getMetadata(); if (!($field = $metadata->getZones())) { return; } $extension = $this->serviceLocator->get('extension.zone'); $include = $extension->getReadFilterInclude(); $exclude = $extension->getReadFilterExclude(); $criteria = []; if (count($include) > 0) { $criteria[$field] = ['$in' => $include]; } if (count($exclude) > 0) { $criteria[$field] = ['$nin' => $exclude]; } if (count($criteria) == 0) { return; } $eventArgs->addCriteria($criteria); }