2016-09-07 6 views
0

Momentan müssen meine Benutzer ihr Passwort eingeben, um ihre E-Mail-Adresse oder ihr Passwort zu ändern, aber sie können ihr Konto löschen, ohne es eingeben zu müssen. Ich bin mir nicht sicher, wie ich das verlangen soll.Ruby on rails -Devise - Passwort zum Löschen des Kontos erforderlich

Bisher habe ich:

Benutzer-Controller:

def destroy 
    @user = User.find(current_user.id) 
    @user.destroy_with_password(user_params) 
     if @user.destroy 
      redirect_to root_url, notice: "User deleted." 
     else 
     redirect_to users_url 
     flash[:notice] = "Couldn't delete" 
     end 
    end 



    def user_params 
     params.require(:user).permit(:username, :email, :password, 
             :password_confirmation, :current_password, :avatar, etc....etc....) 
    end 

A Form:

<%= simple_form_for(@user, :method => :delete) do |f| %> 
     <%= f.input :current_password, autocomplete: "off" %> 
     <%= f.button :submit %> 
<% end %> 

Hier kann der Benutzer löscht, auch wenn kein Passwort eingegeben wird. Die Löschanforderung wird von der richtigen Controller-Aktion verarbeitet.

Processing by UsersController#destroy as HTML 

Processing by UsersController#destroy as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"bla bla bla", "user"=>{"current_password"=>"[FILTERED]"}, "commit"=>"Update User", "locale"=>"en", "id"=>"ce2dc2edc"} 

SQL (0.1ms) DELETE FROM "users" WHERE "users"."id" = $1 [["id", 15]] 

Wie kann ich das Benutzerpasswort anfordern, um das Konto zu löschen?

+0

Für Leute, die nicht wissen @ @ user.destroy_with_password (current_password) ' – aks

Antwort

0

Sie rufen an destroy_with_passworddestroy_with_passwordund dann Aufruf ActiveRecord destroy. Sie müssen nur destroy_with_password anrufen. Code soll wie folgt lauten:

def destroy 
    @user = User.find(current_user.id) 
    if @user.destroy_with_password(user_params) 
    # if @user.destroy  # <== remove me, don't need to destroy twice! 
     redirect_to root_url, notice: "User deleted." 
    else 
    redirect_to users_url 
    flash[:notice] = "Couldn't delete" 
    end 
end 

destroy_with_password wird ein truthy value zurückzukehren.

+0

Ok Dinge gehen besser, aber ich bekomme ein 'aktuelles Passwort ungültige Nachricht, obwohl es gültig ist. –

Verwandte Themen