Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Devise authentication - no confirmation after password recovery

I'm using Devise authentication gem with Rails.

How to display the message from devise.en.yml:

send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes'

after password recovery e-mail has been sent, instead of being redirected to site's root?

Update:

I've found an interesting piece of code in devise_controller.rb:

def successfully_sent?(resource)
  notice = if Devise.paranoid
    resource.errors.clear
    :send_paranoid_instructions
  elsif resource.errors.empty?
    :send_instructions
  end

  if notice
    set_flash_message :notice, notice if is_navigational_format?
    true
  end
end

Setting breakpoints shows that the right lines are being called, :send_instructions is assigned to notice , set_flash_message is called, but I cannot see the result of all this because I am immediately redirected to root path.

like image 651
Paul Avatar asked Nov 30 '25 16:11

Paul


1 Answers

Look at the source code for devise's PasswordsController: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb#L42

You'll have to create a PasswordsController in your app that inherits from Devise::PasswordsController, implement only the after_sending_reset_password_instructions_path_for(resource_name) method and when setting the routes tell devise to use your controller

class PasswordsController < Devise::PasswordsController
  protected
  def after_sending_reset_password_instructions_path_for(resource_name)
    #return your path
  end
end

in routes

devise_for :users, :controllers => { :passwords => "passwords" }
like image 125
Cristian Bica Avatar answered Dec 02 '25 07:12

Cristian Bica



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!