class MojeID
Constants
- MOJEID_ENDPOINT
- MOJEID_ENDPOINT_TEST
Attributes
auth_request[RW]
auth_response[RW]
ax_request[RW]
ax_response[RW]
realm[RW]
return_to[RW]
xrds_result[RW]
Public Class Methods
get_consumer(session, store)
click to toggle source
# File lib/mojeid.rb, line 29 def self.get_consumer(session, store) OpenID::Consumer.new(session, store) end
get_openid_store(filestore_path)
click to toggle source
# File lib/mojeid.rb, line 25 def self.get_openid_store(filestore_path) OpenID::Store::Filesystem.new(filestore_path) end
new(options={:test => false})
click to toggle source
# File lib/mojeid.rb, line 16 def initialize(options={:test => false}) @test = options[:test] OpenID::fetcher.ca_file = "#{File.dirname(__FILE__)}/cert/cznic-cacert-test.pem" if @test end
Private Class Methods
is_attribute_available?(attribute)
click to toggle source
Check if the attribute is available. You can find full list of attributes in lib/attributes.rb
# File lib/mojeid.rb, line 118 def self.is_attribute_available?(attribute) MojeIDAttributes::AVAILABLE_ATTRIBUTES.include?(attribute) ? true : raise("'#{attribute}' is not available") end
Public Instance Methods
add_attributes(attributes=[])
click to toggle source
Add attributes you would like to read about user, to request. You can pass attribute as array and change options like ns_alias or require.
-
example: @moje_id.add_attributes([‘axschema.org/namePerson’, nil, false])
-
or simple : @moje_id.add_attributes(‘axschema.org/namePerson’)
# File lib/mojeid.rb, line 61 def add_attributes(attributes=[]) attributes.each do |attribute| attribute.is_a?(Array) ? add_attribute(attribute[0], attribute[1], attribute[2]) : add_attribute(attribute) end pack_attributes_into_request end
data()
click to toggle source
Return data parsed to a Hash.
# File lib/mojeid.rb, line 91 def data @ax_response.data rescue {} end
fetch_request(consumer)
click to toggle source
# File lib/mojeid.rb, line 33 def fetch_request(consumer) identifier = @test ? MOJEID_ENDPOINT_TEST : MOJEID_ENDPOINT process_discovery(consumer, identifier) @ax_request = OpenID::AX::FetchRequest.new pape_request = OpenID::PAPE::Request.new([OpenID::PAPE::AUTH_PHISHING_RESISTANT]) @auth_request.add_extension(pape_request) end
fetch_response(consumer, params, request, current_url)
click to toggle source
# File lib/mojeid.rb, line 41 def fetch_response(consumer, params, request, current_url) process_response_by_type(:get, consumer, params, request, current_url) @auth_response end
redirect_url(immediate=false)
click to toggle source
returns the url you have to redirect after you compose your request
# File lib/mojeid.rb, line 76 def redirect_url(immediate=false) @auth_request.redirect_url(realm, return_to, immediate) end
response_status()
click to toggle source
# File lib/mojeid.rb, line 80 def response_status case @auth_response.status when OpenID::Consumer::FAILURE then return :failure when OpenID::Consumer::SUCCESS then return :success when OpenID::Consumer::SETUP_NEEDED then return :setup_needed when OpenID::Consumer::CANCEL then return :cancel else return :unknown end end
store_request(consumer)
click to toggle source
# File lib/mojeid.rb, line 46 def store_request(consumer) identifier = @test ? MOJEID_ENDPOINT_TEST : MOJEID_ENDPOINT process_discovery(consumer, identifier) @ax_request = OpenID::AX::StoreRequest.new end
store_response(consumer, params, request, current_url)
click to toggle source
# File lib/mojeid.rb, line 52 def store_response(consumer, params, request, current_url) process_response_by_type(:put, consumer, params, request, current_url) @auth_response end
update_attributes(data={})
click to toggle source
Add attributes and they values which you would like to update user profile, to the request. Accepts hash like { ‘axschema.org/namePerson’ => ‘my new great name’ }.
# File lib/mojeid.rb, line 70 def update_attributes(data={}) data.each { |attribute, value| set_attribute(attribute, value) } pack_attributes_into_request end
Private Instance Methods
add_attribute(attribute, ns_alias=nil, required=false)
click to toggle source
# File lib/mojeid.rb, line 122 def add_attribute(attribute, ns_alias=nil, required=false) if MojeID.is_attribute_available?(attribute) @ax_request.add(OpenID::AX::AttrInfo.new(attribute, ns_alias, required)) end end
pack_attributes_into_request()
click to toggle source
# File lib/mojeid.rb, line 135 def pack_attributes_into_request @auth_request.add_extension(@ax_request) end
process_discovery(consumer, identifier)
click to toggle source
# File lib/mojeid.rb, line 97 def process_discovery(consumer, identifier) begin @auth_request = consumer.begin(identifier) rescue OpenID::DiscoveryFailure => f raise DiscoveryFailure.new(f.message, f.http_response) end @xrds_result = OpenID::Yadis::DiscoveryResult.new(@return_to) end
process_response_by_type(type, consumer, params, request, current_url)
click to toggle source
# File lib/mojeid.rb, line 106 def process_response_by_type(type, consumer, params, request, current_url) @auth_response = consumer.complete(params.reject { |k, v| request.path_parameters.key?(k.to_sym) }, current_url) if @auth_response.status == OpenID::Consumer::SUCCESS if type == :get @ax_response = OpenID::AX::FetchResponse.from_success_response(@auth_response) elsif type == :put @ax_response = OpenID::AX::StoreResponse.from_success_response(@auth_response) end end end
set_attribute(attribute, value)
click to toggle source
Pack attributes and theirs values to request when you would like to store attribute.
# File lib/mojeid.rb, line 129 def set_attribute(attribute, value) if is_attribute_available?(attribute) fetch_request.set_values(attribute, value) end end