[ruby-on-rails] Rails Devise: imposta il token di reimpostazione della password e reindirizza l'utente



Answers

In Rails 4.1, la seguente modifica della risposta di Anatortoise House funziona:

user = User.new
user.password = SecureRandom.hex #some random unguessable string
raw_token, hashed_token = Devise.token_generator.generate(User, :reset_password_token)
user.reset_password_token = hashed_token
user.reset_password_sent_at = Time.now.utc
user.email = 'user@usercompany.com'
user.save!
# Use a mailer you've written, such as:
AccountMailer.set_password_notice(user, raw_token).deliver

La vista e-mail ha questo link:

www.oursite.com/users/password/edit?initial=true&reset_password_token=<%= @raw_token %>
Question

Nella mia app per un determinato caso d'uso creo un nuovo utente (imposta la password in modo programmatico) e inviamo loro un'e-mail di conferma.

Vorrei che fossero in grado di cambiare la password subito dopo aver confermato (senza dover inserire il sistema generato quello che non voglio inviarli)

In effetti vorrei
1) Sistema crea un nuovo account utente con password generata.
2) Il sistema invia un'email di conferma.
3) L'utente fa clic su conferma e viene reindirizzato per inserire la propria password (inviarla efficacemente a un URL come di seguito)

<a href="http://localhost:3000/users/password/edit?reset_password_token=v5Q3oQGbsyqAUUxyqLtb">Change my password</a>

Qualsiasi aiuto / suggerimento sarebbe fantastico.




Ecco il mio frammento per l'anteprima del mailer

class Devise::MailerPreview < ActionMailer::Preview
  def reset_password_instructions
    user = User.last
    token = user.send(:set_reset_password_token)
    Devise::Mailer.reset_password_instructions(user, token)
  end
end





Related