Aplikacja odziedziczyłem posiada następujące działania w celu aktualizacji profilu użytkownika:Jak pisać i testować zmiany hasła podczas korzystania z Authlogic?
class UsersController < ApplicationController
# ...
def update
@user = current_user
if @user.update_attributes(params[:user])
flash[:notice] = "Successfully updated profile."
redirect_to root_url
else
flash[:error] = "Hrm, something went wrong."
render :action => 'edit'
end
end
end
Formularz że PUT
s (naprawdę POST
s z _method=PUT
) do tego działania ma pole password
i password_confirmation
, ale nie old_password
pola . Zauważyłem podczas testów, że nie muszę wypełniać pola password_confirmation
.
Pierwsze pytanie: czy istnieje lepszy sposób na zmianę hasła podczas korzystania z Authlogica?
Drugie pytanie: czy istnieje literatura na temat najlepszych praktyk (zwłaszcza z punktu widzenia użyteczności) dotyczących zmian w hasłach? Czy powinien to być osobny formularz, nie mieszany z innymi polami użytkownika?
Pytanie trzecie: Większość witryn ma pole old_password
, ale Authlogic nie wydaje się tego wspierać. Jaki jest sposób Authlogic-ey potwierdzający fakt, że to on sam zmienia hasło zamiast kogoś, kto zhackował swoją sesję?
Przyczyną problemów z uzyskaniem hasła do aktualizacji jest to, że robiłem "{@user = Factory (: użytkownik), UserSession.create (@user)} w ogólnym bloku konfiguracji, a następnie ponownie wykonaj operację '{@user = Factory (: użytkownik)} w wewnętrznym bloku konfiguracji i sprawdź zmianę hasła tego użytkownika, ale faktycznie zmieniając go na zewnętrznym. D'oh! –