11 class Rule implements \Magento\Framework\Acl\LoaderInterface
26 private $_rootResource;
31 private $aclDataCache;
53 \
Magento\Framework\Acl\RootResource $rootResource,
56 \
Magento\Framework\Acl\Data\CacheInterface $aclDataCache =
null,
57 Json $serializer =
null,
58 $cacheKey = self::ACL_RULE_CACHE_KEY
61 $this->_rootResource = $rootResource;
63 \
Magento\Framework\Acl\Data\CacheInterface::class
66 $this->cacheKey = $cacheKey;
77 foreach ($this->getRulesArray() as
$rule) {
78 $role =
$rule[
'role_id'];
80 $privileges = !empty(
$rule[
'privileges']) ? explode(
',',
$rule[
'privileges']) :
null;
83 if (
$rule[
'permission'] ==
'allow') {
84 if (
$resource === $this->_rootResource->getId()) {
85 $acl->allow($role,
null, $privileges);
87 $acl->allow($role,
$resource, $privileges);
89 $acl->deny($role,
$resource, $privileges);
100 private function getRulesArray()
102 $rulesCachedData = $this->aclDataCache->load($this->cacheKey);
103 if ($rulesCachedData) {
104 return $this->serializer->unserialize($rulesCachedData);
107 $ruleTable = $this->_resource->getTableName(
"authorization_rule");
110 ->from([
'r' => $ruleTable]);
114 $this->aclDataCache->save($this->serializer->serialize($rulesArr), $this->cacheKey);
elseif(isset( $params[ 'redirect_parent']))
populateAcl(\Magento\Framework\Acl $acl)
__construct(\Magento\Framework\Acl\RootResource $rootResource, \Magento\Framework\App\ResourceConnection $resource, array $data=[], \Magento\Framework\Acl\Data\CacheInterface $aclDataCache=null, Json $serializer=null, $cacheKey=self::ACL_RULE_CACHE_KEY)