Wie trennt man das Passwort vom Geräteformular?

8

Ich versuche zwei Dinge zu tun:

1) Ändern Sie das Standard "Benutzerformular bearbeiten" - mit dem Gerät zur Verfügung gestellt - um "Passwort" zu entfernen und die anderen Felder zu aktualisieren, ohne ein Passwort eingeben zu müssen, dh entfernen Sie die Standard-Validierung für das Passwort.

2) Erstellen Sie ein separates Formular zum Ändern des Passworts

Ich habe alles zum arbeiten, es gibt nur ein Problem, in der separaten Form zum Aktualisieren des Passwortes habe ich ein Feld für das aktuelle Passwort eingefügt. Bei Verwendung des Formulars wird das aktuelle Passwort nicht überprüft, daher habe ich

geändert %Vor%

bis

%Vor%

Das hat funktioniert, aber es hat ein anderes Problem aufgeworfen. Zurück im Hauptformular mit allen anderen Details außer Passwort fragt das Formular jetzt nach einem "aktuellen Passwort". Wie kann ich dies ohne eine Validierung für das aktuelle Passwort erreichen, das auf dem Hauptformular aufgerufen wird?

Hier ist mein Registrations Controller:

%Vor%

Danke!

Lösung 1

Ich habe eine Lösung für das Problem gefunden (wenn auch eine sehr unordentliche):

%Vor%

Lösung 2

Können Sie eine bessere Lösung vorschlagen?

    
Jeremy Lynch 11.07.2013, 04:08
quelle

2 Antworten

5

Haben Sie sich Devise Wiki angesehen? Es gibt Beispiele für beide Fälle

  1. Ссылка
  2. Ссылка

Sie sollten sich @user.update_with_password(params[:user]) vs @user.update_attributes(params[:user])

ansehen     
Mike Szyndel 11.07.2013, 06:10
quelle
5

Die angenommene Antwort geht die Frage nicht vollständig an. Welches, glaube ich, ein getrenntes Formular für Benutzerprofilattribute (wie E-Mail, Vorname, usw.) vs. das Passwort hat. Hier ist, was Sie dafür tun müssen:

Nutzen Sie zuerst den Devise :: RegistrationsController für Ihre Profilaktualisierungen.

  • Passen Sie die Ansicht an und entfernen Sie die Felder password und password_confirmation . Devise ignoriert diese, wenn sie nicht im Put enthalten sind.
  • Wenn Sie das aktuelle Passwort nicht für Profiländerungen benötigen, lesen Sie dies . Nicht empfohlen; nicht sicher.

Zweitens, erstellen Sie Ihren eigenen Controller, um die Passwortaktualisierungen zu verwalten, und Ihren eigenen Helfer, um current_password , password und password_confirmation beim Update zu verlangen.

%Vor%

Hier ist der Helfer, update_password_with_password , der die neuen Passwortfelder benötigt.

%Vor%     
steakchaser 08.08.2015 03:20
quelle