2012-02-22 2 views
2

여기에 게시 된 다른 솔루션을 따라 가려는 시도가 24 시간 이상 지속되었지만 제대로 작동하지 않습니다. 나는 Rails에 익숙하지 않고 도움이 필요하다!Devise : 암호 변경

간단히 사용자 비밀번호를 변경할 수 있도록 my/users/edit 페이지를 사용하고 싶습니다. 원래는 current_password없이 실행하고 싶었지만 암호를 변경하고 업데이트 할 수있는 한 거기에 남겨 두어도 괜찮습니다. 여기

내가 무슨 짓을했는지 :

내가 Devise Wiki의 예제를 따라 내가 고안에서 상속을 지정하는 내 사용자 컨트롤러로 삽입 :: RegistrationsController

class UsersController < Devise::RegistrationsController 
    ... 
end 

나는 나의 경로를 변경 :

012 :
devise_for :users, :controllers => { :registrations => 'users' } do 
    match '/users' => 'users#index' 
end 

그리고 여기 내 모델의

내가 만든 UsersController가 Registrations 컨트롤러를 무시하고 암호를 변경/업데이트 할 수 있다고 가정합니다. 그것은 root_path 로의 리다이렉트 (현재 패스워드없이 업데이트 한 이후에 일어날 예정이다)까지 작동하지만 새로운 패스워드는 저장되지 않는다. (로그를 체크했는데 그것이 저장되었음을 보여줄 SQL이 없다.)

아이디어가 있으십니까? 비슷한 일을

+0

참조

def do_reset_password id = params[:id] # there may be a better way of doing this, devise should be able to give us these messages if params[:user][:password] != params[:user][:password_confirmation] flash[:alert] = "Passwords must match." redirect_to :back return end if @user.reset_password!(params[:user][:password],params[:user][:password_confirmation]) @user.save respond_to do |format| format.html { redirect_to '/home', notice: 'Your password has been changed.' } end else flash[:alert] = "Invalid password, must be at least 6 charactors." redirect_to :back end end 

설정

암호를 편집 할 수 있도록하려는 경우 사용자 양식이 추가 이 질문 [여기에 링크를 입력하십시오.] [1] [1] : http://stackoverflow.com/questions/6928461/devise-allowing-users-to-change-passwords?answertab=votes#tab-top – chiayi

답변

3

시도 : Devise Forgot Password for logged in user

는이 암호를 변경하기위한 별도의 뷰를 가지고 있습니다.

핵심은 내가 궁극적으로 작동하도록 만들 수 없기 때문에 사용자 컨트롤러에 내 솔루션을 작성하고 대신 devise가 제공하는 방법을 사용하여 게시했습니다.

<%= form_for(@user, :url => url_for(:action => :do_reset_password) , :html => { :method => :post }) do |f| %> 

    <%= f.hidden_field :reset_password_token %> 

    <div><%= f.label :password, "New password" %><br /> 
    <%= f.password_field :password %></div> 

    <div><%= f.label :password_confirmation, "Confirm new password" %><br /> 
    <%= f.password_field :password_confirmation %></div> 

    <div><%= f.submit "Change my password" %></div> 
<% end %> 

사용자 컨트롤러 :/routes.rb

resource :users do 
    post 'do_reset_password' 
end 
+0

귀하의 질문을 잘못 읽었을 수도 있습니다. 관리자/관리자가 사용자 비밀번호를 변경할 수있게 하시겠습니까? 또는 사용자가 자신을 변경할 수 있습니까? – fiestacasey

+0

사용자가 직접 변경할 수 있기를 바랍니다. 나는 '설정'을 처리하기 위해 별도의 'RegistrationsController'를 만들려고합니다. 일을 더 간단하게 만들어서 UsersController와 경로가 모두 충돌하지 않게 할 수도 있습니다. – ralphos

+0

귀하의 방법을 시도하고 있는데 오류가 발생합니다 : '경로가 [POST]와 일치하지 않습니다'/ assets " – ralphos