Concevoir De Ne Pas Valider Mot De Passe/Mot De Passe De Confirmation
J'ai un custom contrôleur qui gère l'édition des mots de passe utilisateur basée sur le code ici.
Utilisateur Modèle
attr_accessible :password, :password_confirmation, :username, :login
...
devise :database_authenticatable,
:lockable,
:registerable,
:recoverable,
:rememberable,
:trackable
PasswordsController
expose(:user) { current_user }
def update
if user.update_with_password(params[:user])
sign_in(user, :bypass => true)
flash[:notice] = "success"
else
render :edit
end
end
Modifier mon formulaire de mot de passe est situé ici.
Le problème c'est que peu importe ce que je entrer (ou ne saisissez pas d'ailleurs) dans la edit formulaire de mot de passe, Le "succès" de la méthode flash est affiché.
- Le fait tout le travail, comment il devrait bien? si le champ de confirmation ne correspond pas ou current_password est faux, cela ne change pas le mot de passe?
- Il a encore des modifications à tout ce qui est en passe :mot de passe indépendamment de ce que (le cas échéant) est en :password_confirmation.
- qu'advient-il si vous modifiez l'instruction if pour
if params[:user][:password] == params[:user][:password_confirmation]
et mettreuser.update_with_password(params[:user])
dans le corps? - Vous manque le
validatable
module ou si vous omettez de le code que vous avez fourni? - Notez que même si vous avez inclus
validatable
, si vous avez suivi les Concevoir et OmniAuth RailsCast les instructions qui incluent primordialpassword_required?
, les utilisateurs qui s'inscrivent à travers omniauth ne sera pas obtenir leur réinitialise le mot de passe confirmé. - Merci pour la mention de cette! M'a sauvé quelques heures. 🙂
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez Concevoir de faire des validations, vous devez ajouter le
:validatable
module à votre modèle. C'est assez facile à faire, il suffit d'ajouter:validatable
à la liste de module dans ledevise
appel, de sorte que votre modèle dit:Cela va faire concevoir ajouter des validations.
Un autre moyen facile est d'ajouter vos propres validations. Si vous voulez juste pour vérifier que le mot de passe de confirmation de matches, vous pouvez ajouter un
validates_confirmation_of
de validation en ajoutant ceci à votre modèle:J'espère que cette aide.
validates_confirmation_of :password
était ce qui me manquaitJe crois que vous avez oublié d'initialiser forte paramètre dans application_controller.rb dans les rails 4
before_action :configure_permitted_parameters, si: :devise_controller?
protégé
password_confirmation
à la liste des aseptisé paramètres, merci!trouver votre objet de mise à jour dans le contrôleur.
si vous ne voulez pas mettre à jour l'ancien mot de passe puis ajouter ces ligne avant la mise à jour de sorte que le nouveau code sera:
écrire quelque chose comme ceci dans de l'utilisateur.rb modèle