2017-04-12 33 views
0

我有一個用戶索引,我想添加一個按鈕,當我點擊它時(用戶失去邀請時)會發送密碼重置電子郵件。Rails 4 +設計可以邀請:重置密碼

# 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 

通常設計用來重置密碼形式,但我想既然電子郵件是已知的,可以在PARAMS提供

回答

2

你可以做這樣的事情,並使用設計的現有方法我可以覆蓋此,來自文件: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 
+0

唯一的問題是,它發送郵件後,我簽出。反正有嗎? –

+0

我想這是因爲這一行:'@ user.reset_password(new_password,new_password)'。因爲用戶的密碼已更改並創建新的會話。你可以跳過這一行,並使用'send_reset_password_instructions'。在我看來,這可能應該由管理員用戶通過管理面板完成。 – jdgray

+0

它是由管理員完成的,因爲非當前用戶 –