class OmniAuth::Strategies::NwbBis
Public Instance Methods
auth_hash(user_info)
click to toggle source
# File lib/omniauth-nwbbis.rb, line 55 def auth_hash(user_info) # TODO fail if no email is given hash = AuthHash.new(:provider => name, :uid => CGI.unescape(user_info.fetch("a:EMail", ""))) puts user_info first_name = CGI.unescape(user_info.fetch("a:Vorname", "")) last_name = CGI.unescape(user_info.fetch("a:Name", "")) hash.info = { :name => "#{first_name} #{last_name}", :email => CGI.unescape(user_info.fetch("a:EMail", "")) } hash end
bis_credentials()
click to toggle source
# File lib/omniauth-nwbbis.rb, line 72 def bis_credentials {:bis_user => options.bis_user, :bis_password => options.bis_password} end
callback_phase()
click to toggle source
# File lib/omniauth-nwbbis.rb, line 26 def callback_phase secdata = request.params["secdata"] # Decrypt secdata logon_id = decrypt_logon_id(secdata) if logon_id.length >= 0 # Check Login Status logon_status = get_logon_status(logon_id) login_type = logon_status.fetch("a:LoginTyp", "Unbekannt") username = logon_status.fetch("a:Benutzername", nil) if login_type == "Login" and not username.nil? user_info = get_user_info(username) env['omniauth.auth'] = auth_hash(user_info) call_app! # Create Auth Hash else # Redirect to NWB Login response = Rack::Response.new response.redirect "#{options.login_url}#{options.callback_param}" response.finish end end end
decrypt_logon_id(secdata)
click to toggle source
# File lib/omniauth-nwbbis.rb, line 77 def decrypt_logon_id(secdata) xml_body = BisXmlDecryptLogonId.new(secdata).result() envelope = BisXmlEnvelope.new(xml_body, bis_credentials).result() logon_id = "" res = BisClient.execute("http://tempuri.org/INWBService/EntschluesselLogonID", envelope) if res.success? MultiXml.parser = :ox xml = MultiXml.parse(res.body) if xml != nil logon_id = xml.fetch("s:Envelope", {}).fetch("s:Body", {}).fetch("EntschluesselLogonIDResponse", {}).fetch("EntschluesselLogonIDResult", "") end end logon_id end
get_logon_status(logon_id)
click to toggle source
# File lib/omniauth-nwbbis.rb, line 97 def get_logon_status(logon_id) xml_body = BisXmlGetLogonStatus.new(logon_id).result() envelope = BisXmlEnvelope.new(xml_body, bis_credentials).result() logon_status = {} res = BisClient.execute("http://tempuri.org/INWBService/GibLogonStatus", envelope) if res.success? MultiXml.parser = :ox xml = MultiXml.parse(res.body) if xml != nil logon_status = xml.fetch("s:Envelope", {}).fetch("s:Body", {}).fetch("GibLogonStatusResponse", {}).fetch("GibLogonStatusResult", "") end end logon_status end
get_user_info(username)
click to toggle source
# File lib/omniauth-nwbbis.rb, line 117 def get_user_info(username) xml_body = BisXmlGetUserInfo.new(username).result() envelope = BisXmlEnvelope.new(xml_body, bis_credentials).result() user_info = {} res = BisClient.execute("http://tempuri.org/INWBService/GibBenutzer", envelope) if res.success? MultiXml.parser = :ox xml = MultiXml.parse(res.body) if xml != nil user_info = xml.fetch("s:Envelope", {}).fetch("s:Body", {}).fetch("GibBenutzerResponse", {}).fetch("GibBenutzerResult", "") end end user_info end
request_phase()
click to toggle source
# File lib/omniauth-nwbbis.rb, line 20 def request_phase response = Rack::Response.new response.redirect "#{options.login_info_url}#{options.callback_param}" response.finish end