2013-02-12 5 views
9

Я использую Devise gem в своем приложении. Я мог бы настроить devs session_controller для ответа на оба запроса из Интернета и из вызова API для мобильных устройств.Забыл пароль Devise gem API

Но теперь я пытаюсь посмотреть, как я могу использовать функцию «Забыл пароль» для Devise gem для вызова Mobile API. Я могу использовать знак с API как показано ниже

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

Могу ли я сделать то же самое с забытым паролем?

+0

Здравствуйте, @balanv. Я ищу аутентификацию с помощью устройства для web и api. Могу ли я узнать, как вы это разработали? Заранее спасибо. –

+0

@SagarBommidi: Пожалуйста, разместите это как отдельный вопрос, я могу предоставить вам ответ для этого. – balanv

+0

не распространяется на: восстанавливаемый модуль в драгоценности? – BKSpurgeon

ответ

17

Получил ответ.

1) Создание пользовательских действий, которые recieves email в качестве входных данных

2) Добавить ниже код

@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

Отличный !!!!!!! –

+3

Вам будет лучше показывать то же сообщение, существует ли пользователь или нет. Как и в случае, это действие можно использовать для лова для действительных учетных записей пользователей. –

+1

Хороший Крис! – balanv

1

Я сделал это:

В 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