Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

75 lines (62 sloc) 2.327 kb
module AuthlogicConnect::Openid::Process
include AuthlogicConnect::Openid::Variables
def start_openid
save_openid_session
call_openid
end
def complete_openid
restore_attributes
call_openid
end
def call_openid
options = {}
options[:return_to] = auth_callback_url
# this is called both on start and complete.
# reason being, in the open_id_authentication library (where "authenticate_with_open_id" is defined),
# it checks the rack session to find openid pareters, and knows whether we're at
# start or complete
auth_controller.send(:authenticate_with_open_id, openid_identifier, options) do |result, openid_identifier|
complete_openid_transaction(result, openid_identifier)
return true
end
return false
end
def complete_openid_transaction(result, openid_identifier)
if result.unsuccessful?
errors.add_to_base(result.message)
end
if AccessToken.find_by_key(openid_identifier.normalize_identifier)
else
token = OpenidToken.new(:key => openid_identifier)
self.access_tokens << token
self.active_token = token
end
end
# want to do this after the final save
def cleanup_openid_session
[:auth_attributes, :authentication_type, :auth_callback_method].each {|key| remove_session_key(key)}
auth_session.each_key do |key|
remove_session_key(key) if key.to_s =~ /^OpenID/
end
end
def validate_by_openid
if processing_authentication
authentication_protocol(:openid, :start) || authentication_protocol(:openid, :complete)
errors.add(:access_tokens, "had the following error: #{@openid_error}") if @openid_error
end
end
def save_openid_session
# Tell our rack callback filter what method the current request is using
auth_session[:auth_callback_method] = auth_controller.request.method
auth_session[:auth_attributes] = attributes_to_save
auth_session[:authentication_type] = auth_params[:authentication_type]
auth_session[:auth_method] = "openid"
end
def attributes_to_save
{}
end
def restore_attributes
# Restore any attributes which were saved before redirecting to the auth server
self.attributes = auth_session[:auth_attributes] unless is_auth_session?
end
end
Jump to Line
Something went wrong with that request. Please try again.