Where to override current_user helper method of devise gem

前端 未结 4 1785
耶瑟儿~
耶瑟儿~ 2020-12-13 00:31

How can i override current_user of devise gem. Actually I need to add web services for mobile-app.

Currently devise is managing session and \'current_

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-13 01:23

    The other answer suggesting aliasing the method is actually not the best solution. Doug English's comment is the best solution:

    # In ApplicationHelper
    def devise_current_user
       @devise_current_user ||= warden.authenticate(:scope => :user)
    end
    

    Here's the reason:

    Suppose you're including your ApplicationHelper in your controller. If you need a method in your ApplicationHelper that relies on devise_current_user, given the alias solution inside the controller, you're out of luck.

    But with the explicit method definition above, you can move the definition to the helper and call it from other methods and you still get to include it in the controller.

    This is useful, for example, when you're developing a user impersonation solution and you need to show two different users in the view, one for the real admin (devise_current_user) and the other, the impersonated user (current_user).

提交回复
热议问题