예제 #1
0
 public function saveRel(Mage_Admin_Model_Rules $rule)
 {
     $this->_getWriteAdapter()->beginTransaction();
     try {
         $roleId = $rule->getRoleId();
         $this->_getWriteAdapter()->delete($this->getMainTable(), "role_id = {$roleId}");
         $masterResources = Mage::getModel('admin/roles')->getResourcesList2D();
         $masterAdmin = false;
         if ($postedResources = $rule->getResources()) {
             foreach ($masterResources as $index => $resName) {
                 if (!$masterAdmin) {
                     $permission = in_array($resName, $postedResources) ? 'allow' : 'deny';
                     $this->_getWriteAdapter()->insert($this->getMainTable(), array('role_type' => 'G', 'resource_id' => trim($resName, '/'), 'privileges' => '', 'assert_id' => 0, 'role_id' => $roleId, 'permission' => $permission));
                 }
                 if ($resName == 'all' && $permission == 'allow') {
                     $masterAdmin = true;
                 }
             }
         }
         $this->_getWriteAdapter()->commit();
     } catch (Mage_Core_Exception $e) {
         throw $e;
     } catch (Exception $e) {
         $this->_getWriteAdapter()->rollBack();
     }
 }
예제 #2
0
 /**
  * Save ACL resources
  *
  * @param Mage_Admin_Model_Rules $rule
  */
 public function saveRel(Mage_Admin_Model_Rules $rule)
 {
     try {
         $this->_getWriteAdapter()->beginTransaction();
         $roleId = $rule->getRoleId();
         $this->_getWriteAdapter()->delete($this->getMainTable(), "role_id = {$roleId}");
         $postedResources = $rule->getResources();
         if ($postedResources) {
             $row = array('role_type' => 'G', 'resource_id' => 'all', 'privileges' => '', 'assert_id' => 0, 'role_id' => $roleId, 'permission' => 'allow');
             // If all was selected save it only and nothing else.
             if ($postedResources === array('all')) {
                 $this->_getWriteAdapter()->insert($this->getMainTable(), $row);
             } else {
                 foreach (Mage::getModel('admin/roles')->getResourcesList2D() as $index => $resName) {
                     $row['permission'] = in_array($resName, $postedResources) ? 'allow' : 'deny';
                     $row['resource_id'] = trim($resName, '/');
                     $this->_getWriteAdapter()->insert($this->getMainTable(), $row);
                 }
             }
         }
         $this->_getWriteAdapter()->commit();
     } catch (Mage_Core_Exception $e) {
         $this->_getWriteAdapter()->rollBack();
         throw $e;
     } catch (Exception $e) {
         $this->_getWriteAdapter()->rollBack();
         Mage::logException($e);
     }
 }