我有一个现有的admin_user
我基本上正在迁移到另一个admin_user
记录,我想用旧记录中的值设置新记录的密码哈希值。
因为_beforeSave
挂钩setPassword()并加密它,所以似乎不可能。
答案 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。