Sha256: 7242f38908bdfca400ec61ee9df60721a6bc0a2c800d0683ef9796dee7fa6823

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

#
# The simplest possible security strategy - this controller mixin
# will challenge the user with BASIC authentication, pass that
# information to the broker, and then cache the ticket and the user
# identifier in the session until the ticket expires.
#
module Console::Auth::Basic
  extend ActiveSupport::Concern

  class BasicUser < RestApi::Authorization
    extend ActiveModel::Naming
    include ActiveModel::Conversion

    def initialize(opts={})
      opts.each_pair { |key,value| instance_variable_set("@#{key}", value) }
    end
    def email_address
      nil
    end

    def persisted?
      false
    end
  end

  included do
    helper_method :current_user, :user_signed_in?, :previously_signed_in?

    rescue_from ActiveResource::UnauthorizedAccess, :with => :console_access_denied
  end

  # return the current authenticated user or nil
  def current_user
    @authenticated_user
  end

  # This method should test authentication and handle if the user
  # is unauthenticated
  def authenticate_user!
    authenticate_or_request_with_http_basic(auth_realm) do |login,password|
      if login.present?
        @authenticated_user = BasicUser.new :login => login, :password => password
      else
        raise Console::AccessDenied
      end
    end
  end

  def user_signed_in?
    not current_user.nil?
  end

  def previously_signed_in?
    cookies[:prev_login] ? true : false
  end

  protected
    def auth_realm
      "Authenticate to #{RestApi.site.host}"
    end

    def console_access_denied
      request_http_basic_authentication(auth_realm)
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openshift-origin-console-1.3.4 app/controllers/console/auth/basic.rb
openshift-origin-console-1.3.3 app/controllers/console/auth/basic.rb
openshift-origin-console-1.3.2 app/controllers/console/auth/basic.rb