如何在管理员端添加字段?

时间:2013-11-22 04:35:56

标签: magento

我安装了一个模块&因为我需要添加一个password_guard(密码类型)字段&我还需要检查密码(另一个字段)& guard_password不应该是相同的。

适用于app / code / community / Unirgy / Dropship / Block / Adminhtml / Vendor / Edit / Tab / Form.php

在函数_prepareForm()中我输入了以下代码: -

$fieldset->addField('password_guard', 'password', array(
        'name'      => 'password_guard',
        'label'     => $hlp->__('Guard Password'),
        'class'     => 'validate-password',
        'note'      => $hlp->__('Leave empty for no change'),
    ));

&安培;该领域开始出现&也进入数据库,但现在有2个问题......我面临: - 1)如何检查?那个guard_password&密码不能相同(密码已存储在DB中) 2)guard_password存储在DB中,但它像reset123一样存储...表示没有md5发生

那么我该如何实现这些任务呢?在哪些文件中需要进行编码&如何?

由于 考沙尔

1 个答案:

答案 0 :(得分:0)

这些验证将在您正在处理表单提交的控制器操作中。 如果您所谈论的密码是客户密码而不是与之匹配的密码将是代码

$email = 'dependra@example.com';//It will be the customer email, if customer is logged in than you can get from session also
$toBeCheckPasswd = 'admin123';// your password_guard
$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);
$res = $customer->validatePassword($toBeCheckPasswd);
if($res)
    echo "matches";
else
    echo "do not matche";

如果它不是cutomer密码而不是

$hashedPasswd = "f34c354b4c8ab4fcb88311f1d160a322:fE";//you will get from your table
$res = Mage::helper('core')->validateHash($toBeCheckPasswd, $hashedPasswd);

如果是没有salt的普通md5密码,那么只需

try{
    if($md5password==md5($toBeCheckPasswd))
        echo "matches";
    else
        Mage::throwException("Do not match");
}
catch(Excepton $e){
    Mage::getSingleton('adminhtml/session')->addError( $e->getMessage());
    $this->_redirect('*/*/index');
}

md5加密已经足够了,但Magento通过在加密中添加私钥(salt)更进了一步。 这就是

$password = "12345678";
$salt = "at";
$encyPasswod = md5($salt.$pass).":".$salt;

并使用匹配Mage::helper('core')->validateHash($toBeCheckPasswd, $hashedPasswd);