admin_user
我有一个基本上要迁移到附加记录的现有admin_user
记录,并且我想使用旧记录中的值设置新记录的密码哈希。
因为_beforeSave
挂钩 setPassword() 并对其进行加密,所以这似乎是不可能的。
admin_user
我有一个基本上要迁移到附加记录的现有admin_user
记录,并且我想使用旧记录中的值设置新记录的密码哈希。
因为_beforeSave
挂钩 setPassword() 并对其进行加密,所以这似乎是不可能的。
在写这个问题的过程中,当我想出如何解决它时,所以我会继续在这里发布我自己的答案,以防它帮助其他人。
看起来你需要重载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,因此不需要在任何地方定义它们。
更新:不要拒绝回答自己的问题,这是鼓励的。