我有一个非常标准的设计安装,同时启用了recoverable
和confirmable
。
如果用户尚未确认他们的电子邮件,我需要禁用密码重置
例如:
答案 0 :(得分:0)
我知道这是一个老问题,但是我有相同的用例,并通过为用户模型覆盖devise send_reset_password_instructions方法来解决了这个问题。这是我方法的最终版本:
def self.send_reset_password_instructions(attributes={})
recoverable = find_or_initialize_with_errors(reset_password_keys, attributes, :not_found)
if (recoverable.persisted? && !recoverable.confirmed?)
recoverable.errors.add(:email, I18n.t('devise.failure.not_verified'))
else
recoverable.send_reset_password_instructions
end
recoverable
end
更具体地说-如果用户保留在数据库中但未通过电子邮件验证,则添加错误并忽略重置密码电子邮件发送。