/** * Add list of nodes and their children to acl * * @param Magento_Acl $acl * @param DOMNodeList $resources * @param Magento_Acl_Resource $parent */ protected function _addResourceTree(Magento_Acl $acl, DOMNodeList $resources, Magento_Acl_Resource $parent = null) { /** @var $resourceConfig DOMElement */ foreach ($resources as $resourceConfig) { if (!$resourceConfig instanceof DOMElement) { continue; } /** @var $resource Magento_Acl_Resource */ $resource = $this->_resourceFactory->createResource(array($resourceConfig->getAttribute('id'))); $acl->addResource($resource, $parent); if ($resourceConfig->hasChildNodes()) { $this->_addResourceTree($acl, $resourceConfig->childNodes, $resource); } } }
/** * Load virtual resources as sub-resources of existing one. * * @param Magento_Acl $acl */ protected function _loadVirtualResources(Magento_Acl $acl) { $virtualResources = $this->_config->getAclVirtualResources(); /** @var $resourceConfig DOMElement */ foreach ($virtualResources as $resourceConfig) { if (!$resourceConfig instanceof DOMElement) { continue; } $parent = $resourceConfig->getAttribute('parent'); $resourceId = $resourceConfig->getAttribute('id'); if ($acl->has($parent) && !$acl->has($resourceId)) { /** @var $resource Magento_Acl_Resource */ $resource = $this->_resourceFactory->createResource(array($resourceId)); $acl->addResource($resource, $parent); } } }