直接设置管理员用户的密码哈希值

时间:2012-08-10 19:21:38

标签: magento

我有一个现有的admin_user我基本上正在迁移到另一个admin_user记录,我想用旧记录中的值设置新记录的密码哈希值。

因为_beforeSave挂钩setPassword()并加密它,所以似乎不可能。

1 个答案:

答案 0 :(得分:1)

在撰写这个问题的过程中,当我想出如何解决这个问题时,我会继续在这里发布我自己的答案,以防它帮助其他任何人。

看起来您需要重载Mage_Admin_Model_User类才能执行此操作。由于您可能直接加载类并调用方法来设置密码,因此您可能不需要担心重写或事件观察。

我是这样做的:

class Me_Mymodule_Model_Admin_User extends Mage_Admin_Model_user
{
    protected function _beforeSave()
    {
        parent::_beforeSave();

        if ($this->getPasswordHash()) {
            $this->setData('password', $this->getPasswordHash());
        }
    }
}

然后,要更改它,请执行以下操作。就我而言,我是在我写的自定义迁移脚本中完成的。

// This just sets the "password_hash" data on the model which has no function other
// than to be converted to the "password" value in the _beforeSave() above.
$adminUser = Mage::getModel('mymodule/admin_user')->load($id);
$adminUser->setPasswordHash('insert password hash here')->save();

setPasswordHash()getPasswordHash()方法是常规的Magento魔法getter / setter,因此不需要在任何地方定义它们。

更新:请勿回答自己的问题,而是encouraged