module TokenVerification
  extend ActiveSupport::Concern
  include ActionController::HttpAuthentication::Token::ControllerMethods

  included do
    before_action :authenticate
  end


  protected
  # Authenticate the user with token based authentication
  def authenticate
    authenticate_token || render_unauthorized
  end

  def authenticate_token
    authenticate_with_http_token do |token, options|
      #@current_user = User.find_by(api_key: token)
      Rails.logger.debug "token - " + token.to_s

      @user = Employee.authenticate_by_token(token)
      if @user
        return true
        #Maybe log - login?
      end

    end
  end

  def render_unauthorized(realm = "Application")
    self.headers["WWW-Authenticate"] = %(Token realm="#{realm.gsub(/"/, "")}")
    render json: 'Bad credentials', status: :unauthorized
  end

end
