/** * {@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; }
/** * {@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; }
/** * 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); }
/** * 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; }
/** * Populate ACL with resources from external storage * * @param Acl $acl * @return void */ public function populateAcl(Acl $acl) { $this->_addResourceTree($acl, $this->_resourceProvider->getAclResources(), null); }