note description : "OPENID demo application root class" date : "$Date$" revision : "$Revision$" class APPLICATION inherit WSF_URI_TEMPLATE_ROUTED_SERVICE WSF_SERVICE create make_and_launch feature {NONE} -- Initialization make_and_launch local launcher: WSF_NINO_SERVICE_LAUNCHER opts: WSF_SERVICE_LAUNCHER_OPTIONS do initialize_router create opts.make opts.set_verbose (True) opts.set_option ("port", 0) create launcher.make (Current, opts) launcher.on_launched_actions.extend (agent on_launched) launcher.launch end on_launched (conn: WGI_CONNECTOR) local e: EXECUTION_ENVIRONMENT do if attached {WGI_NINO_CONNECTOR} conn as nino then create e if attached e.item ("COMSPEC") as l_comspec then e.launch (l_comspec + " /C start " + "http://localhost:" + nino.port.out + "/") else e.launch ("http://localhost:" + nino.port.out + "/") end end end setup_router do map_uri_template_agent ("/", agent handle_root) map_uri_template_agent ("/openid", agent handle_openid) end handle_root (req: WSF_REQUEST; res: WSF_RESPONSE) local m: WSF_HTML_PAGE_RESPONSE s: STRING do create m.make m.set_title ("EWF::OpenID demo") create s.make_empty s.append ("
%N") s.append ("OpenID identifier ") s.append ("") s.append ("
%N") s.append ("
%N") s.append ("OpenID identifier ") s.append ("") s.append ("
%N") m.set_body (s) res.send (m) end handle_openid (req: WSF_REQUEST; res: WSF_RESPONSE) local m: WSF_HTML_PAGE_RESPONSE redir: WSF_HTML_DELAYED_REDIRECTION_RESPONSE s: STRING o: OPENID_CONSUMER v: OPENID_CONSUMER_VALIDATION do if attached req.string_item ("openid.mode") as l_openid_mode then create m.make m.set_title ("EWF::OpenID demo") create s.make_empty if l_openid_mode.same_string ("id_res") then o := new_openid_consumer (req) create v.make_from_string (o, req.absolute_script_url (req.request_uri)) v.validate if v.is_valid then s.append ("
User authenticated
") s.append ("") s.append ("") else s.append ("
User authentication failed!!!
") end else s.append ("
Unexpected OpenID.mode=" + l_openid_mode + "
") end m.set_body (s) res.send (m) elseif attached req.string_item ("openid_identifier") as l_id then create s.make_empty o := new_openid_consumer (req) s.append ("Testing " + l_id + "
%N") s.append ("Return-to" + o.return_url + "
") if attached o.auth_url (l_id) as l_auth_url then s.append ("Click to sign with " + l_id + "
") create redir.make (l_auth_url, 1) s.append ("Automatically follow link in " + redir.delay.out + " second(s)
") redir.set_title ("EWF::OpenID demo") redir.set_body (s) res.send (redir) else create m.make m.set_title ("EWF::OpenID demo") m.set_body (s) res.send (m) end else res.redirect_now ("/") end end new_openid_consumer (req: WSF_REQUEST): OPENID_CONSUMER do create Result.make (req.absolute_script_url ("/openid")) -- Result.ask_email (True) Result.ask_nickname (False) -- Result.ask_fullname (False) Result.ask_country (True) end end