Sto tentando di ignorare completamente il messaggio di errore di Devise 'reset_password_token is invalid'
. Mi piacerebbe leggere "password reset link has already been used."
Come posso fare questo? Non è presente un campo o una parola chiave per questo in devise.en.yml
.Stabilire come modificare l'errore reset_password_token
risposta
Reset password token is invalid
messaggio è un errore di convalida generato durante l'aggiornamento della password e non è un errore specifico elaborato (per il quale i messaggi sono memorizzati in devise.en.yml).
Questa convalida avviene nel metodo devise/passwords_controller#update. codice riportato qui di seguito:
# PUT /resource/password
def update
self.resource = resource_class.reset_password_by_token(resource_params)
yield resource if block_given?
if resource.errors.empty?
resource.unlock_access! if unlockable?(resource)
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, flash_message) if is_flashing_format?
sign_in(resource_name, resource)
respond_with resource, location: after_resetting_password_path_for(resource)
else
respond_with resource
end
end
La linea self.resource = resource_class.reset_password_by_token(resource_params)
imposta l'oggetto resource.errors
con il messaggio di errore relativo al reset_password_token essere valido.
Controllo il valore di resource.errors
dopo questa linea mostrerà una grande hash termina con ... @messages={:reset_password_token=>["is invalid"]}
I devise_error_messages
method riformatta questo per dire "Reset password token non è valido".
Per modificare questo messaggio, il controller delle password deve essere personalizzato e il metodo update
modificato per avere un diverso hash del messaggio di errore.
Procedura sarebbero le seguenti:
1) Personalizzare i percorsi per le password controllore
# config/routes.rb
devise_for :users, :controllers => { :passwords => "passwords" }
2) Creare la password personalizzato controllore
# app/controllers/passwords_controller.rb
class PasswordsController < Devise::PasswordsController
end
3) Personalizzare il metodo di aggiornamento di cambia il messaggio di errore:
# app/controllers/passwords_controller.rb
# Include the update method as it is fully, with the following changes in the else block:
def update
...
if resource.errors.empty?
...
else
if resource.errors.messages[:reset_password_token]
resource.errors.messages.delete(:reset_password_token)
resource.errors.messages[:password_reset_link] = ["has already been used"]
end
respond_with resource
end
.210
Una soluzione più semplice di sovrascrivere l'passwords_controller, è semplicemente quello di modificare la vista:
in app/views/ideare/password/edit.html.haml (o il vostro erb equivalente), Basta mettere questa condizione all'interno del modulo:
- if resource.errors[:reset_password_token].present?
.alert.alert-danger
This password reset URL has expired. You may have requested to reset your password more than once. Follow the link in the most recent email or
= link_to 'request to reset your password again.', new_user_password_path
E si consiglia di rimuovere queste due linee:
= f.error_notification
= f.full_error :reset_password_token
- 1. Stabilire la versione gtest
- 2. Stabilire come passare current_user a confirm_instructions mailer
- 3. Stabilire una connessione P2P in C#
- 4. Come stabilire se SQL Server è locale o remoto?
- 5. Come stabilire se un oggetto è un oggetto RegExp?
- 6. Come stabilire quale app è stata selezionata da Intent.createChooser?
- 7. Come stabilire la chiave di ordinamento NSSortDescriptor secondaria?
- 8. Come stabilire una connessione TCP/IP abilitata SSL in Ruby
- 9. Come stabilire a quale porta è collegato un dispositivo USB?
- 10. Come stabilire una connessione S3-EC2 veloce e affidabile
- 11. Come posso stabilire una connessione al canale interrupt L2Capp?
- 12. Firebase Android: come stabilire se il nodo è stato sincronizzato
- 13. Come posso eseguire comandi complicati per stabilire una connessione mosh?
- 14. ActiveDirectoryMembershipProvider - "Impossibile stabilire una connessione sicura"
- 15. Stabilire una promessa risolta in ES2015
- 16. Come modificare/modificare un pacchetto Meteor?
- 17. come modificare CSPROJ
- 18. Come modificare l'icona JFrame
- 19. Magento - Come modificare contenitore1
- 20. Come posso modificare EditText?
- 21. Come modificare una gemma?
- 22. Netbeans: come modificare @author
- 23. Passi successivi con Git: Stabilire un flusso di lavoro coesivo
- 24. Reagire nativo stabilire quando il testo è tagliato
- 25. Impossibile stabilire una connessione SSL con Composer con PHP 5.6.3
- 26. tentativo di eseguire sqlcmd non riesce, impossibile stabilire la connessione?
- 27. Come stabilire se l'elemento XML è contrassegnato come richiesto nel file XSD
- 28. Come modificare una colonna e modificare il valore predefinito?
- 29. Swift_TransportException collegamento non è stato possibile stabilire con smtp.gmail.com ospite
- 30. Modo JavaScript per stabilire se un oggetto è una matrice