コード例 #1
0
ファイル: Converter.php プロジェクト: rahulkumars/magento2
 /**
  * {@inheritdoc}
  */
 public function convert($source)
 {
     $result = [];
     $allResources = $this->resourceProvider->getAclResources();
     $hashAclResourcesTree = $this->hashResources($allResources[1]['children']);
     /** @var \DOMNodeList $integrations */
     $integrations = $source->getElementsByTagName('integration');
     /** @var \DOMElement $integration */
     foreach ($integrations as $integration) {
         if ($integration->nodeType != XML_ELEMENT_NODE) {
             continue;
         }
         $integrationName = $integration->attributes->getNamedItem('name')->nodeValue;
         $result[$integrationName] = [];
         $result[$integrationName][self::API_RESOURCES] = [];
         /** @var \DOMNodeList $resources */
         $resources = $integration->getElementsByTagName('resource');
         /** @var \DOMElement $resource */
         foreach ($resources as $resource) {
             if ($resource->nodeType != XML_ELEMENT_NODE) {
                 continue;
             }
             $resource = $resource->attributes->getNamedItem('name')->nodeValue;
             $resourceNames = $this->addParentsToResource($hashAclResourcesTree, $resource);
             foreach ($resourceNames as $name) {
                 $result[$integrationName][self::API_RESOURCES][] = $name;
             }
         }
         // Remove any duplicates added parents
         $result[$integrationName][self::API_RESOURCES] = array_unique($result[$integrationName][self::API_RESOURCES]);
     }
     return $result;
 }
コード例 #2
0
 public function testGetTree()
 {
     $resources = ['resource1', 'resource2', 'resource3'];
     $mappedResources = ['mapped1', 'mapped2', 'mapped3'];
     $this->aclResourceProviderMock->expects($this->once())->method('getAclResources')->willReturn($resources);
     $this->integrationDataMock->expects($this->once())->method('mapResources')->willReturn($mappedResources);
     $this->assertEquals($mappedResources, $this->model->getTree());
 }
コード例 #3
0
 public function testConvert()
 {
     $aclResources = (require __DIR__ . '/_files/acl.php');
     $inputData = new \DOMDocument();
     $inputData->load(__DIR__ . '/_files/api.xml');
     $expectedResult = (require __DIR__ . '/_files/api.php');
     $this->resourceProviderMock->expects($this->once())->method('getAclResources')->willReturn($aclResources);
     $this->assertEquals($expectedResult, $this->model->convert($inputData));
 }
コード例 #4
0
 /**
  * {@inheritdoc}
  */
 public function convert($source)
 {
     $result = [];
     $allResources = $this->resourceProvider->getAclResources();
     $hashAclResourcesTree = $this->hashResources($allResources[1]['children']);
     /** @var \DOMNodeList $integrations */
     $integrations = $source->getElementsByTagName('integration');
     /** @var \DOMElement $integration */
     foreach ($integrations as $integration) {
         if ($integration->nodeType != XML_ELEMENT_NODE) {
             continue;
         }
         $integrationName = $integration->attributes->getNamedItem('name')->nodeValue;
         $result[$integrationName] = [];
         $result[$integrationName][self::API_RESOURCES] = [];
         /** @var \DOMElement $email */
         $email = $integration->getElementsByTagName('email')->item(0)->nodeValue;
         /** @var \DOMNodeList $resources */
         $resources = $integration->getElementsByTagName('resource');
         $result[$integrationName][self::KEY_EMAIL] = $email;
         if ($integration->getElementsByTagName('endpoint_url')->length) {
             /** @var \DOMElement $endpointUrl */
             $endpointUrl = $integration->getElementsByTagName('endpoint_url')->item(0)->nodeValue;
             $result[$integrationName][self::KEY_AUTHENTICATION_ENDPOINT_URL] = $endpointUrl;
         }
         if ($integration->getElementsByTagName('identity_link_url')->length) {
             /** @var \DOMElement $identityLinkUrl */
             $identityLinkUrl = $integration->getElementsByTagName('identity_link_url')->item(0)->nodeValue;
             $result[$integrationName][self::KEY_IDENTITY_LINKING_URL] = $identityLinkUrl;
         }
         /** @var \DOMElement $resource */
         foreach ($resources as $resource) {
             if ($resource->nodeType != XML_ELEMENT_NODE) {
                 continue;
             }
             $resource = $resource->attributes->getNamedItem('name')->nodeValue;
             $resourceNames = $this->addParentsToResource($hashAclResourcesTree, $resource);
             foreach ($resourceNames as $name) {
                 $result[$integrationName][self::API_RESOURCES][] = $name;
             }
         }
         // Remove any duplicates added parents
         $result[$integrationName][self::API_RESOURCES] = array_values(array_unique($result[$integrationName][self::API_RESOURCES]));
     }
     return $result;
 }
コード例 #5
0
 /**
  * Return an array of selected resource ids.
  *
  * If everything is allowed then iterate through all
  * available resources to generate a comprehensive array of all resource ids, rather than just
  * returning "Magento_Backend::all".
  *
  * @return string
  */
 public function getSelectedResourcesJson()
 {
     $selectedResources = $this->_selectedResources;
     if ($this->isEverythingAllowed()) {
         $resources = $this->_resourceProvider->getAclResources();
         $selectedResources = $this->_getAllResourceIds($resources[1]['children']);
     }
     return $this->encoder->encode($selectedResources);
 }
コード例 #6
0
 public function testGetTree()
 {
     $this->webapiBlock = $this->getWebapiBlock();
     $resources = [1 => ['children' => [1, 2, 3]]];
     $this->aclResourceProvider->expects($this->once())->method('getAclResources')->will($this->returnValue($resources));
     $rootArray = "rootArrayValue";
     $this->integrationHelper->expects($this->once())->method('mapResources')->with([1, 2, 3])->will($this->returnValue($rootArray));
     $this->assertEquals($rootArray, $this->webapiBlock->getTree());
 }
コード例 #7
0
 /**
  * Get Json Representation of Resource Tree
  *
  * @return array
  */
 public function getTree()
 {
     $resources = $this->aclResourceProvider->getAclResources();
     $rootArray = $this->integrationData->mapResources(isset($resources[1]['children']) ? $resources[1]['children'] : []);
     return $rootArray;
 }
コード例 #8
0
 /**
  * Populate ACL with resources from external storage
  *
  * @param Acl $acl
  * @return void
  */
 public function populateAcl(Acl $acl)
 {
     $this->_addResourceTree($acl, $this->_resourceProvider->getAclResources(), null);
 }