/** * Check whether given role has access to give id * * @param string $roleId * @param string $resourceId * @param mixed $privilege * @return bool */ public function isAllowed($roleId, $resourceId, $privilege = null) { try { return $this->_acl->isAllowed($roleId, $resourceId, $privilege); } catch (Exception $e) { try { if (!$this->_acl->has($resourceId)) { return $this->_acl->isAllowed($roleId, null, $privilege); } } catch (Exception $e) { } } return false; }
/** * 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); } } }
/** * Populate ACL with rules from external storage. * * @param Magento_Acl $acl */ public function populateAcl(Magento_Acl $acl) { $ruleList = $this->_ruleResource->getRuleList(); foreach ($ruleList as $rule) { $role = $rule['role_id']; $resource = $rule['resource_id']; if ($acl->hasRole($role) && $acl->has($resource)) { $acl->allow($role, $resource); } } }