如何通过Devise身份验证令牌直接从Active Admin中的edit_page重置用户的密码?

时间:2019-01-31 22:39:36

标签: activeadmin

我希望admin_user能够从Active Admin edit_page重设用户的密码,但是目前卡住了。

我的想法是制作一个action_item按钮,并为有效的用户对象从设计身份验证gem启动@ user.send_reset_password_instructions方法。但是,action_item无法得到任何通知:消息,这就是我被困住的地方。

能否请您帮助我实现action_item按钮,该按钮可以启动@ user.send_reset_password_instructions,重定向到同一user_edit_page并快速发送通知消息,而无需呈现任何其他视图?

action_item :reset_password,only: :edit do
  link_to "Reset password",edit_timein_employee_path
end

controller do
   def reset_password
    super do |success,failure|
    employee.send_reset_password_instructions
  end
 end
end

非常感谢!

1 个答案:

答案 0 :(得分:0)

我会这样做:确保将其粘贴到app/admin/admin_user.rb文件中。我不会直接添加控制器方法,而是会使用member_action dsl指令添加逻辑。祝你好运!

action_item :reset_password, :only => :edit do
 link_to 'Reset password',  do_password_reset_admin_admin_user_path(resource), :method => :post
end

member_action :do_password_reset, :method => :post do
  flash.notice = "A mail containing password reset instructions has been sent to: #{resource.email}"
  resource.send_reset_password_instructions
  redirect_to edit_admin_admin_user_path(resource) and return
end