module AuthlogicRpx
module Helper
# helper to insert an embedded iframe RPX login
# takes options hash:
# * app_name: name of the application (will be prepended to RPX domain and used in RPX dialogues)
# * return_url: url for the RPX callback (e.g. user_sessions_url)
# * add_rpx: if true, requests RPX callback to add to current session. Else runs normal authentication process (default)
#
# The options hash may include other options as supported by rpx_now (see http://github.com/grosser/rpx_now)
#
def rpx_embed(options = {})
app_name = options.delete( :app_name )
token_url = build_token_url!( options )
RPXNow.embed_code(app_name, token_url, options )
end
# helper to insert a link to pop-up RPX login
# takes options hash:
# * link_text: text to use in the link
# * app_name: name of the application (will be prepended to RPX domain and used in RPX dialogues)
# * return_url: url for the RPX callback (e.g. user_sessions_url)
# * add_rpx: if true, requests RPX callback to add to current session. Else runs normal authentication process (default)
# * unobtrusive: true/false; sets javascript style for link. Default: true
#
# The options hash may include other options as supported by rpx_now (see http://github.com/grosser/rpx_now)
#
def rpx_popup(options = {})
options = { :unobtrusive => true, :add_rpx => false }.merge( options )
app_name = options.delete( :app_name )
link_text = options.delete( :link_text )
token_url = build_token_url!( options )
RPXNow.popup_code( link_text, app_name, token_url, options )
end
private
def build_token_url!( options )
options.delete( :return_url ) + (options[:return_url].include?('?') ? '&' : '?') + (
{ :authenticity_token => form_authenticity_token, :add_rpx => options.delete( :add_rpx ) }.collect { |n| "#{n[0]}=#{ u(n[1]) }" if n[1] }
).compact.join('&')
end
end
end