用户导入时禁用更改密码电子邮件

时间:2017-08-29 01:44:57

标签: php silverstripe

当CSV将用户导入Silverstripe 3.6时,密码已更改,电子邮件将被发送出去。 有没有办法阻止发送此电子邮件?

1 个答案:

答案 0 :(得分:2)

看起来这种行为来自于成员的密码字段在导入过程中被“更改”的事实(从无到有)。如果查看Member::onBeforeWrite,它会检查配置属性“notify_password_change”,您可以使用自定义加载器暂时覆盖该属性:

class NoEmailMemberCsvBulkLoader extends MemberCsvBulkLoader
{
    public function load($filepath)
    {
        try {
            Config::nest()
            Config::inst()->update('Member', 'notify_password_change', false);
            return parent::load($filepath);
        } finally {
            Config::unnest();
        }
    }
}

然后,您可以告诉SilverStripe使用您的导入器。这里的问题是MemberImportForm::doImport直接实例化MemberCsvBulkLoader,因此您不能使用注入器重载它,或者以任何其他方式设置它。这是一种耻辱。

短期选项,因为导入的CSV(注意:不是您可能拥有的客户端)将在您_config.php个文件中禁用此配置设置做进口。

您可以考虑向框架提取拉取请求,以使new MemberCsvBulkLoader可用于注入的区域。另一种选择是直接向MemberCsvBulkLoader发出拉取请求,以便在成员上设置此配置选项,因为您可能不是第一个认为这是批量导入工具的奇怪行为的人。

希望这有帮助!