2013-02-12 51 views
9

Tôi đã sử dụng Devise gem trong ứng dụng của mình. Tôi có thể có thể định cấu hình lập các phiên_controller để trả lời cả yêu cầu từ web và từ cuộc gọi API trên thiết bị di động.Quên mật khẩu Devise gem API

Nhưng bây giờ tôi đang cố gắng để xem làm thế nào tôi có thể sử dụng tùy chọn Quên mật khẩu của Devise gem cho cuộc gọi API di động. Tôi có thể sử dụng đăng nhập bằng API như dưới đây

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

tôi có thể làm tương tự với mật khẩu quên không?

+0

Xin chào @balanv, Tôi đang tìm kiếm xác thực bằng cách sử dụng cho cả web và api. Tôi có thể biết bạn đã làm việc như thế nào không? Cảm ơn trước. –

+0

@SagarBommidi: Vui lòng đăng câu hỏi này dưới dạng câu hỏi riêng, tôi có thể cung cấp cho bạn câu trả lời cho điều này. – balanv

+0

không phải là điều này được bao gồm bởi: mô-đun có thể phục hồi trong đá quý phát minh không? – BKSpurgeon

Trả lời

17

Có câu trả lời.

1) Tạo một hành động tùy chỉnh mà recieves email như là đầu vào

2) Thêm mã dưới đây

@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

Bạn sẽ tắt hiển thị cùng một thông báo cho dù người dùng có tồn tại hay không. Như vậy, hành động này có thể được sử dụng để cá cho các tài khoản người dùng hợp lệ. –

+1

Tốt nhất Chris! – balanv

1

Tôi đã làm điều này:

Trong config/routes.rb:

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

và trong 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 
Các vấn đề liên quan