What is code for devise authenticate_user! after generated for :user

I believe you linked to your own answer, the method it defines is

def authenticate_#{mapping}!(opts={})
  opts[:scope] = :#{mapping}
  warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
end

Which if we substituted the true class, in your case User, it would look like:

def authenticate_user!(opts={})
  opts[:scope] = :user
  warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
end

So it really calls out to warden and that is where the bulk of the authentication logic lies.

For a typical Rails application, The authenticate_user! method will be defined as an instance_method on ApplicationController.


Devise uses Warden for authentication. And in order to use it Devise provides own authentication strategies implementing authenticate! method. This is what you need. You already have the first part of the code (from the link in your question), which is:

  def authenticate_user!(opts={})
    opts[:scope] = :user
    warden.authenticate!(opts) if !devise_controller? || opts.delete(:force)
  end

In the code above warden.authenticate! uses a method coming from Devise (implemented by Devise) depending on a chosen Devise strategy.

For example, the method that implements DatabaseAuthenticatable strategy is here: https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/database_authenticatable.rb

the method that implements Rememberable strategy is here: https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/rememberable.rb