Exemplo n.º 1
0
 /**
  * Load rules
  *
  * @param Mage_Api_Model_Acl $acl
  * @param array $rulesArr
  * @return Mage_Api_Model_Mysql4_Acl
  */
 function loadRules(Mage_Api_Model_Acl $acl, array $rulesArr)
 {
     foreach ($rulesArr as $rule) {
         $role = $rule['role_type'] . $rule['role_id'];
         $resource = $rule['resource_id'];
         $privileges = !empty($rule['privileges']) ? explode(',', $rule['privileges']) : null;
         $assert = null;
         if (0 != $rule['assert_id']) {
             $assertClass = AO::getSingleton('api/config')->getAclAssert($rule['assert_type'])->getClassName();
             $assert = new $assertClass(unserialize($rule['assert_data']));
         }
         try {
             if ($rule['permission'] == 'allow') {
                 $acl->allow($role, $resource, $privileges, $assert);
             } else {
                 if ($rule['permission'] == 'deny') {
                     $acl->deny($role, $resource, $privileges, $assert);
                 }
             }
         } catch (Exception $e) {
             //$m = $e->getMessage();
             //if ( eregi("^Resource '(.*)' not found", $m) ) {
             // Deleting non existent resource rule from rules table
             //$cond = $this->_write->quoteInto('resource_id = ?', $resource);
             //$this->_write->delete(AO::getSingleton('core/resource')->getTableName('admin/rule'), $cond);
             //} else {
             //TODO: We need to log such exceptions to somewhere like a system/errors.log
             //}
         }
         /*
         switch ($rule['permission']) {
             case Mage_Api_Model_Acl::RULE_PERM_ALLOW:
                 $acl->allow($role, $resource, $privileges, $assert);
                 break;
         
             case Mage_Api_Model_Acl::RULE_PERM_DENY:
                 $acl->deny($role, $resource, $privileges, $assert);
                 break;
         }
         */
     }
     return $this;
 }