Sha256: 3e124b3c448e1bd88396d691f183be5190ffcbf6bff8d1497853e59999ca1a6d

Contents?: true

Size: 1.96 KB

Versions: 7

Compression:

Stored size: 1.96 KB

Contents

module ExvoAuth::Controllers::Base
  def self.included(base)
    raise "Please define a #root_url method in #{base.name} (or in routes)" unless base.method_defined? :root_url
  end

  # A before filter to protect your sensitive actions.
  def authenticate_user!
    if !signed_in?
      store_location!

      callback_key   = ExvoAuth::Config.callback_key
      callback_value = params[callback_key]

      if callback_value
        redirect_to non_interactive_sign_in_path(callback_key => callback_value)
      else
        redirect_to "/auth/interactive"
      end
    end
  end

  # Usually this method is called from your sessions#create.
  def sign_in_and_redirect!(user_id)
    session[:user_id] = user_id
    
    url = if params[:state] == "popup"
      ExvoAuth::Config.host + "/close_popup.html"
    else
      stored_location || root_url
    end
    
    redirect_to url
  end
  
  # Redirect to sign_out_url, signs out and redirects back to root_path (by default).
  # This method assumes you have a "root_url" method defined in your controller.
  #
  # Usuallly this method is called from your sessions#destroy.
  def sign_out_and_redirect!(return_to = root_url)
    session.delete(:user_id)
    @current_user = nil
    redirect_to sign_out_url(return_to)
  end
  
  def current_user
    return @current_user if defined?(@current_user)
    @current_user = session[:user_id] && find_user_by_id(session[:user_id])
  end
  
  def current_consumer_id
    @current_consumer_id
  end

  def signed_in?
    !!current_user
  end
  
  protected

  def store_location!
    session[:return_to] = current_url
  end
  
  def stored_location
    session.delete(:return_to)
  end

  def sign_out_url(return_to)
    ExvoAuth::Config.host + "/users/sign_out?" + Rack::Utils.build_query({ :return_to => return_to })
  end

  def non_interactive_sign_in_path(params = {})
    path  = "/auth/non_interactive"
    query = Rack::Utils.build_query(params)
    query.empty? ? path : "#{path}?#{query}"
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
exvo-auth-0.7.5 lib/exvo_auth/controllers/base.rb
exvo-auth-0.7.4 lib/exvo_auth/controllers/base.rb
exvo-auth-0.7.3 lib/exvo_auth/controllers/base.rb
exvo-auth-0.7.2 lib/exvo_auth/controllers/base.rb
exvo-auth-0.7.1 lib/exvo_auth/controllers/base.rb
exvo-auth-0.7.0 lib/exvo_auth/controllers/base.rb
exvo-auth-0.6.2 lib/exvo_auth/controllers/base.rb