0

admin_user我有一个基本上要迁移到附加记录的现有admin_user记录,并且我想使用旧记录中的值设置新记录的密码哈希。

因为_beforeSave挂钩 setPassword() 并对其进行加密,所以这似乎是不可能的。

4

1 回答 1

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,因此不需要在任何地方定义它们。

更新:不要拒绝回答自己的问题,这是鼓励的。

于 2012-08-10T19:21:38.270 回答