2013-02-12 12 views
9

私のアプリケーションでDevise gemを使用しています。 ウェブからのリクエストとモバイルAPIコールの の両方に応答するようにdevis sessions_controllerを設定できました。パスワードを忘れましたDevits gem API

しかし、今私はDevits gem モバイルAPIコールのForgot Passwordオプションを使用する方法を見てみようとしています。下記のようにAPIでログインすることができます

curl -X POST 'http://localhost:3002/users/sign_in.json' -d 'user[email][email protected]&user[password]=123456' 

パスワードを忘れた場合も同じことができますか?

+0

こんにちは@balanv、私はウェブとapiの両方のためにdeviseを使って認証を与えることを探しています。あなたはどのように仕事をしたのか分かりますか?前もって感謝します。 –

+0

@SagarBommidi:これを別の質問として投稿してください。私はあなたにこれを回答することができます。 – balanv

+0

はこれによってカバーされていません:devise宝石のrecoverableモジュールですか? – BKSpurgeon

答えて

17

答えが見つかりました。

1)コードの下に追加します。)入力

2としてemailをrecievesカスタムアクションを作成します

@user = User.find_by_email("[email protected]") 
if @user.present? 
@user.send_reset_password_instructions 
render :text => "updated" 
else 
    render :text => "no such email" 
end 
+1

Excelent !!!!!!! –

+3

ユーザーが存在するかどうかにかかわらず、同じメッセージを表示する方がよいでしょう。つまり、このアクションは、有効なユーザーアカウントを取得するために使用できます。 –

+1

良い1人のChris! – balanv

1

Iやったこの:

config/routes.rbで:

namespace :api do 
    namespace :v1 do 
    resources :reset_passwords, only: [:index, :create] 
    end 
end 

app/controllers/api/v1/reset_passwords_controller.rb

class Api::V1::ResetPasswordsController < Api::V1::BaseController 
    def index 
    user = User.find_by_email(user_params) 
    if user.present? 
    user.send_reset_password_instructions 
    render(
      json: "{ \"result\": \"Email already exists\"}", 
      status: 201 
     ) 
    else 
     render(
      json: "{ \"error\": \"Not found\"}", 
      status: 404 
     ) 
    end 
    end 

    private 

    def user_params 
    params.require(:email) 
    end 

end 
関連する問題