Exemple #1
0
 /**
  * Populate ACL with roles from external storage
  *
  * @param \Magento\Framework\Acl $acl
  * @return void
  */
 public function populateAcl(\Magento\Framework\Acl $acl)
 {
     $roleTableName = $this->_resource->getTableName('authorization_role');
     $adapter = $this->_resource->getConnection('core_read');
     $select = $adapter->select()->from($roleTableName)->order('tree_level');
     foreach ($adapter->fetchAll($select) as $role) {
         $parent = $role['parent_id'] > 0 ? $role['parent_id'] : null;
         switch ($role['role_type']) {
             case RoleGroup::ROLE_TYPE:
                 $acl->addRole($this->_groupFactory->create(['roleId' => $role['role_id']]), $parent);
                 break;
             case RoleUser::ROLE_TYPE:
                 if (!$acl->hasRole($role['role_id'])) {
                     $acl->addRole($this->_roleFactory->create(['roleId' => $role['role_id']]), $parent);
                 } else {
                     $acl->addRoleParent($role['role_id'], $parent);
                 }
                 break;
         }
     }
 }