【问题标题】:Rails 4 + Devise Invitable: Reset PasswordRails 4 + 设计邀请:重置密码
【发布时间】:2017-04-12 16:19:55
【问题描述】:

我有一个用户索引,我想添加一个按钮,当我点击它时会发送密码重置电子邮件(当用户失去他们的邀请时)。

# View
<% @users.each do |user| %>
    <%= link_to "Reset Password", reset_password_path(user) %> 
<% end %>

# Controller
def reset_password
    @user = User.find(params[:id])
    email = @user.email

    # Fire password reset...

    redirect_to users_path
end

通常,Devise 使用表单来重置密码,但我想我可以覆盖它,因为电子邮件是已知的并且可以在参数中提供

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 devise devise-invitable


    【解决方案1】:

    您可以这样做并使用 Devise 现有的方法,来自文档:https://github.com/plataformatec/devise/wiki/How-To:-Mass-password-reset-and-email-notification

    def reset_password
     #Generate random, long password that the user will never know:
     new_password = Devise.friendly_token(length = 50)
    
     @user = User.find(params[:id])
     @user.reset_password(new_password, new_password)
    
     #Send instructions so user can enter a new password:
     @user.send_reset_password_instructions
    
     redirect_to users_path
    end
    

    【讨论】:

    • 唯一的问题是它在发送电子邮件后将我注销。反正周围有吗?
    • 我想这是因为这条线:@user.reset_password(new_password, new_password)。因为用户的密码被更改并创建了一个新的会话。你可以跳过这一行,直接使用send_reset_password_instructions。在我看来,这可能应该由管理员用户通过管理面板完成。
    • 这是由管理员为非当前用户完成的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2012-01-03
    • 2011-04-11
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多