note description : "OPENID demo application root class" date : "$Date$" revision : "$Revision$" class APPLICATION_EXECUTION inherit WSF_ROUTED_SKELETON_EXECUTION undefine requires_proxy end WSF_ROUTED_URI_TEMPLATE_HELPER WSF_NO_PROXY_POLICY SHARED_EXECUTION_ENVIRONMENT export {NONE} all end create make feature {NONE} -- Initialization setup_router do map_uri_template_agent ("/", agent handle_root, Void) map_uri_template_agent ("/openid", agent handle_openid, Void) 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 ("Any 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_items (o, req.items_as_string_items) 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_all_info (False) -- Result.ask_nickname (False) -- Result.ask_fullname (False) -- Result.ask_country (True) end end