Class: EME::SSO::TokenReader
- Inherits:
-
Object
- Object
- EME::SSO::TokenReader
- Defined in:
- lib/eme/sso/token_reader.rb
Class Method Summary collapse
Instance Method Summary collapse
- #call(env) ⇒ Object
- #connect_account(cookies, session) ⇒ Object
-
#initialize(app) ⇒ TokenReader
constructor
A new instance of TokenReader.
- #set_cookies(cookies, session) ⇒ Object
Constructor Details
#initialize(app) ⇒ TokenReader
Returns a new instance of TokenReader.
3 4 5 |
# File 'lib/eme/sso/token_reader.rb', line 3 def initialize(app) @app = app end |
Class Method Details
.get_account_info(ssot) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# 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 |
.setup_user_session(user, session, ssot = nil) ⇒ Object
53 54 55 56 57 58 59 60 61 62 |
# 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 |
Instance Method Details
#call(env) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/eme/sso/token_reader.rb', line 7 def call(env) req = Rack::Request.new(env) = req. session = req.session = false = false if ["_ssot"] && (!session["account_id"] || ["_ssot"] != session[:ssot]) connect_account(, session) elsif !["_ssot"] && session["account_id"] = true #disconnect_account(cookies, session) end @status, @headers, @response = @app.call(env) (, session) if || return [@status, @headers, @response] end |
#connect_account(cookies, session) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/eme/sso/token_reader.rb', line 24 def connect_account(, session) auth_response = EME::SSO::TokenReader.get_account_info(["_ssot"]) code = auth_response.code.to_i # {"temp_screen_name"=>false, "screen_name"=>"kaboo", "language"=>"en", "account_status"=>1, "email"=>"[email protected]", "id"=>12345} if code == 200 account_info = JSON.parse(auth_response.body) EME::SSO::TokenReader.setup_user_session(account_info, session, ["_ssot"]) = true else # delete cookie if it was bad? = 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) ⇒ Object
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/eme/sso/token_reader.rb', line 64 def (, session) if Rack::Utils.(@headers, "screen_name", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400}) Rack::Utils.(@headers, "_ssot", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400}) Rack::Utils.(@headers, "serialized", {:value => "", :path => "/", :domain => ".enmasse.com", :expires => Time.now-86400}) session.clear elsif Rack::Utils.(@headers, "screen_name", {:value => session[:screen_name], :domain => ".enmasse.com", :path => "/"}) end end |