Module: AuthlogicOpenid::Session

Defined in:
lib/authlogic_openid/session.rb

Overview

This module is responsible for adding all of the OpenID goodness to the Authlogic::Session::Base class.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

Add a simple openid_identifier attribute and some validations for the field.



5
6
7
8
9
10
11
# File 'lib/authlogic_openid/session.rb', line 5

def self.included(klass)
  klass.class_eval do
    attr_reader :openid_identifier
    validate :validate_openid_error
    validate :validate_by_openid, :if => :authenticating_with_openid?
  end
end

Instance Method Details

#credentials=(value) ⇒ Object

Hooks into credentials so that you can pass an :openid_identifier key.



14
15
16
17
18
19
# File 'lib/authlogic_openid/session.rb', line 14

def credentials=(value)
  super
  values = value.is_a?(Array) ? value : [value]
  hash = values.first.is_a?(Hash) ? values.first.with_indifferent_access : nil
  self.openid_identifier = hash[:openid_identifier] if !hash.nil? && hash.key?(:openid_identifier)
end

#openid_identifier=(value) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/authlogic_openid/session.rb', line 21

def openid_identifier=(value)
  @openid_identifier = value.blank? ? nil : OpenIdAuthentication.normalize_identifier(value)
  @openid_error = nil
rescue OpenIdAuthentication::InvalidOpenId => e
  @openid_identifier = nil
  @openid_error = e.message
end

#save(&block) ⇒ Object

Cleaers out the block if we are authenticating with OpenID, so that we can redirect without a DoubleRender error.



31
32
33
34
# File 'lib/authlogic_openid/session.rb', line 31

def save(&block)
  block = nil if !openid_identifier.blank?
  super(&block)
end