class EME::SSO::TokenReader

Public Class Methods

get_account_info(ssot) click to toggle source
# File lib/eme/sso/token_reader.rb, line 43
def self.get_account_info(ssot)
  auth_response = nil
  Net::HTTP.start(EME::SSO.settings[:auth_server], EME::SSO.settings[:auth_server_port]) do |http|
    http.open_timeout = 5
    http.read_timeout = 10
    auth_response = http.post("/sso/ticket/#{ssot}/verify", "tt=sso_insecure")
  end
  return auth_response
end
new(app) click to toggle source
# File lib/eme/sso/token_reader.rb, line 3
def initialize(app)
  @app = app
end
setup_user_session(user, session, ssot = nil) click to toggle source
# File lib/eme/sso/token_reader.rb, line 53
def self.setup_user_session(user, session, ssot = nil)
  session[:ssot] = ssot
  session[:screen_name] = if user["temp_screen_name"]
    user["email"].split("@")[0]
  else
    user["screen_name"]
  end
  session[:account_id] = user["id"]
  session[:account_info] = user
end

Public Instance Methods

call(env) click to toggle source
# File lib/eme/sso/token_reader.rb, line 7
def call(env)
  req = Rack::Request.new(env)
  cookies = req.cookies
  session = req.session
  @eat_cookies = false
  @bake_cookies = false
  if cookies["_ssot"] && (!session["account_id"] || cookies["_ssot"] != session[:ssot])
    connect_account(cookies, session)
  elsif !cookies["_ssot"] && session["account_id"]
    @eat_cookies = true
    #disconnect_account(cookies, session)
  end
  @status, @headers, @response = @app.call(env)
  set_cookies(cookies, session) if @eat_cookies || @bake_cookies
  return [@status, @headers, @response]
end
connect_account(cookies, session) click to toggle source
# File lib/eme/sso/token_reader.rb, line 24
def connect_account(cookies, session)
  auth_response = EME::SSO::TokenReader.get_account_info(cookies["_ssot"])
  code = auth_response.code.to_i
  # {"temp_screen_name"=>false, "screen_name"=>"kaboo", "language"=>"en", "account_status"=>1, "email"=>"chris@chrisreister.com", "id"=>12345}
  if code == 200
    account_info = JSON.parse(auth_response.body)
    EME::SSO::TokenReader.setup_user_session(account_info, session, cookies["_ssot"])
    @bake_cookies = true
  else # delete cookie if it was bad?
    @eat_cookies = true
  end
  return true
rescue Exception => e
  puts e.inspect
  puts e.backtrace
  #Airbrake.notify(e) # TO DO: setup airbrake?
  return true
end
set_cookies(cookies, session) click to toggle source
# File lib/eme/sso/token_reader.rb, line 64
def set_cookies(cookies, session)
  if @eat_cookies
    Rack::Utils.set_cookie_header!(@headers, "screen_name", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
    Rack::Utils.set_cookie_header!(@headers, "_ssot", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
    Rack::Utils.set_cookie_header!(@headers, "serialized", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400})
    session.clear
  elsif @bake_cookies
    Rack::Utils.set_cookie_header!(@headers, "screen_name", {:value => session[:screen_name], :domain => ".enmasse.com", :path => "/"})
  end
end