2013-02-12 19 views
9

Ho usato Devise gem nella mia applicazione. Potrei fare in modo che configuri session_controller per rispondere a entrambe le richieste dal web e dalla chiamata API mobile.Password dimenticata Devise gem API

Ma ora sto cercando di vedere come posso utilizzare l'opzione Password dimenticata di Devise gem per la chiamata API mobile. Posso usare l'accesso con API come sotto

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

posso fare lo stesso con password dimenticata?

+0

Salve @balanv, sto cercando di dare l'autenticazione usando devise per web e api. Posso sapere come hai funzionato? Grazie in anticipo. –

+0

@SagarBommidi: Si prega di postare questo come una domanda separata, posso fornire una risposta per questo. – balanv

+0

non è coperto dal modulo: recuperabile nella devise gem? – BKSpurgeon

risposta

17

Hai la risposta.

1) Creare un'azione personalizzata, che riceve email come input

2) Aggiungere sottostante Codice

@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

Eccellente !!!!!!! –

+3

È preferibile eseguire il rendering dello stesso messaggio indipendentemente dal fatto che l'utente esista o meno. Così com'è, questa azione potrebbe essere utilizzata per pescare account utente validi. –

+1

Bene, Chris! – balanv

1

ho fatto questo:

In config/routes.rb:

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

e in 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 
Problemi correlati