Sha256: 1736c65c994f098631e4146722e27b4647dcb32289186d4505016185011361f9

Contents?: true

Size: 1.32 KB

Versions: 6

Compression:

Stored size: 1.32 KB

Contents

require 'omniauth/enterprise'

module OmniAuth
  module Strategies
    class CAS
      include OmniAuth::Strategy
      
      autoload :Configuration, 'omniauth/strategies/cas/configuration'
      autoload :ServiceTicketValidator, 'omniauth/strategies/cas/service_ticket_validator'
      
      def initialize(app, options = {}, &block)
        super(app, options[:name] || :cas, options.dup, &block)
        @configuration = OmniAuth::Strategies::CAS::Configuration.new(options)
      end
      
      protected
      
      def request_phase
        [ 
          302,
          {
            'Location' => @configuration.login_url(callback_url),
            'Content-Type' => 'text/plain'
          },
          ["You are being redirected to CAS for sign-in."]
        ]
      end

      def callback_phase
        ticket = request.params['ticket']
        return fail!(:no_ticket, 'No CAS Ticket') unless ticket
        validator = ServiceTicketValidator.new(@configuration, callback_url, ticket)
        @user_info = validator.user_info
        return fail!(:invalid_ticket, 'Invalid CAS Ticket') if @user_info.nil? || @user_info.empty?
        super
      end
      
      def auth_hash
        OmniAuth::Utils.deep_merge(super, {
          'uid' => @user_info.delete('user'),
          'extra' => @user_info
        })
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
oa-enterprise-0.2.4 lib/omniauth/strategies/cas.rb
oa-enterprise-0.2.3 lib/omniauth/strategies/cas.rb
oa-enterprise-0.2.2 lib/omniauth/strategies/cas.rb
oa-enterprise-0.2.1 lib/omniauth/strategies/cas.rb
oa-enterprise-0.2.0 lib/omniauth/strategies/cas.rb
oa-enterprise-0.2.0.beta5 lib/omniauth/strategies/cas.rb