예제 #1
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);
     }
 }
예제 #2
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();
     }
 }
예제 #3
0
 /**
  * Set permissions to given role as defined in config. If no permissions
  * are given, the role's permissions are not changed at all.
  *  
  * @param Mage_Admin_Model_Rules $rules
  * @param Mage_Admin_Model_Role $role
  */
 public function createPermissions(Mage_Admin_Model_Rules $rules, Mage_Admin_Model_Role $role)
 {
     if (null === $this->resources) {
         return null;
     }
     return $rules->setResources($this->resources)->setRoleId($role->getId())->saveRel()->save();
 }
$conn->addConstraint('FK_CMS_PAGE_VENDOR', $t, 'udropship_vendor', $vt, 'vendor_id');

$t = $this->getTable('cms_block');
$conn->addColumn($t, 'udropship_vendor', 'int(11) unsigned');
$conn->addConstraint('FK_CMS_BLOCK_VENDOR', $t, 'udropship_vendor', $vt, 'vendor_id');
*/
$t = $this->getTable('admin_user');
$conn->modifyColumn($t, 'username', 'varchar(128) NOT NULL DEFAULT \'\'');
$conn->addColumn($t, 'udropship_vendor', 'int(11) unsigned');
$conn->addConstraint('FK_ADMIN_USER_VENDOR', $t, 'udropship_vendor', $vt, 'vendor_id');
$t = $this->getTable('admin_role');
$roleId = $conn->fetchOne("select role_id from {$t} where role_name='Dropship Vendor'");
if (!$roleId) {
    $conn->insert($t, array('tree_level' => 1, 'role_type' => 'G', 'role_name' => 'Dropship Vendor'));
    $roleId = $conn->lastInsertId($t);
    $rules = new Mage_Admin_Model_Rules();
    $rules->setResources(array('admin/catalog', 'admin/catalog/products'));
    $rules->setRoleId($roleId)->saveRel();
}
$ut = $this->getTable('admin_user');
$vendors = $conn->fetchAll("select * from {$this->getTable('udropship_vendor')}");
$coreHlp = new Mage_Core_Helper_Data();
foreach ($vendors as $v) {
    if ($conn->fetchOne("select user_id from {$ut} where username=?", $v['email'])) {
        continue;
    }
    $conn->insert($ut, array('firstname' => $v['vendor_name'], 'lastname' => $v['vendor_attn'], 'email' => $v['email'], 'username' => $v['email'], 'password' => $coreHlp->getHash($v['password'], 2), 'created' => now(), 'is_active' => 1, 'udropship_vendor' => $v['vendor_id']));
    $userId = $conn->lastInsertId($ut);
    $conn->insert($t, array('parent_id' => $roleId, 'tree_level' => 2, 'role_type' => 'U', 'user_id' => $userId, 'role_name' => $v['vendor_name']));
}
$this->run("\nCREATE TABLE IF NOT EXISTS `{$this->getTable('udropship_vendor_registration')}`  (\n`reg_id` int(10) unsigned NOT NULL auto_increment,\n`store_id` smallint(5) unsigned NOT NULL,\n`vendor_name` varchar(255) default NULL,\n`telephone` varchar(255) default NULL,\n`email` varchar(255) default NULL,\n`password_enc` varchar(255) default NULL,\n`password_hash` varchar(255) default NULL,\n`carrier_code` varchar(64) default NULL,\n`vendor_attn` varchar(255) default NULL,\n`street` text,\n`city` varchar(255) default NULL,\n`zip` varchar(255) default NULL,\n`region_id` int(10) unsigned default NULL,\n`region` varchar(255) default NULL,\n`country_id` char(2) default NULL,\n`remote_ip` varchar(15) default NULL,\n`registered_at` datetime default NULL,\n`url_key` varchar(64) default NULL,\n`comments` text,\n`notes` text,\nPRIMARY KEY  (`reg_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n");