_aclRetriever = $aclRetriever; $this->_rootResource = $rootResource; $this->_rulesCollectionFactory = $rulesCollectionFactory; $this->_aclResourceProvider = $aclResourceProvider; $this->_integrationData = $integrationData; parent::__construct($context, $data); } /** * Set core registry * * @param \Magento\Framework\Registry $coreRegistry * @return void * @deprecated 100.1.0 * @since 100.1.0 */ public function setCoreRegistry(\Magento\Framework\Registry $coreRegistry) { $this->coreRegistry = $coreRegistry; } /** * Get core registry * * @return \Magento\Framework\Registry * @deprecated 100.1.0 * @since 100.1.0 */ public function getCoreRegistry() { if (!($this->coreRegistry instanceof \Magento\Framework\Registry)) { return \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Framework\Registry::class); } else { return $this->coreRegistry; } } /** * Get tab label * * @return \Magento\Framework\Phrase */ public function getTabLabel() { return __('Role Resources'); } /** * Get tab title * * @return string */ public function getTabTitle() { return $this->getTabLabel(); } /** * Whether tab is available * * @return bool */ public function canShowTab() { return true; } /** * Whether tab is visible * * @return bool */ public function isHidden() { return false; } /** * Check if everything is allowed * * @return bool */ public function isEverythingAllowed() { $selectedResources = $this->getSelectedResources(); $id = $this->_rootResource->getId(); return in_array($id, $selectedResources); } /** * Get selected resources * * @return array|mixed|\string[] * @since 100.1.0 */ public function getSelectedResources() { $selectedResources = $this->getData('selected_resources'); if (empty($selectedResources)) { $allResource = $this->getCoreRegistry()->registry(SaveRole::RESOURCE_ALL_FORM_DATA_SESSION_KEY); if ($allResource) { $selectedResources = [$this->_rootResource->getId()]; } else { $selectedResources = $this->getCoreRegistry()->registry(SaveRole::RESOURCE_FORM_DATA_SESSION_KEY); } if (null === $selectedResources) { $rid = $this->_request->getParam('rid', false); $selectedResources = $this->_aclRetriever->getAllowedResourcesByRole($rid); } $this->setData('selected_resources', $selectedResources); } return $selectedResources; } /** * Get Json Representation of Resource Tree * * @return array */ public function getTree() { return $this->_integrationData->mapResources($this->getAclResources()); } /** * Get lit of all ACL resources declared in the system. * * @return array */ private function getAclResources() { $resources = $this->_aclResourceProvider->getAclResources(); $configResource = array_filter( $resources, function ($node) { return isset($node['id']) && $node['id'] == 'Magento_Backend::admin'; } ); $configResource = reset($configResource); return isset($configResource['children']) ? $configResource['children'] : []; } }