Mercurial > summit-idp
view static-files/js/confirm.js @ 60:be00b5be37d6
half-baked proof of concept for popup auth flow.
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Mon, 28 Jun 2010 22:31:00 -0700 |
parents | |
children |
line wrap: on
line source
// ----------------------------------------------------------------------- // ConfirmServer object // ----------------------------------------------------------------------- // // This sets up an in-browser "server" that can be accessed from other // windows via a postMessage API. ( function(window) { var ConfirmServer = window.ConfirmServer = {}; var inRequest = false; var config; var handlers = { requestAccess: function(options, cb, origin) { if (inRequest) { cb({error: "already in request"}); return; } config = Config.value; inRequest = true; if (config.state != "logged-in") { cb({error: "not logged in"}); return; } if (!("trustedOrigins" in config)) { config.trustedOrigins = []; } if (config.trustedOrigins.indexOf(origin) != -1) cb({granted: true}); else { var origins = window.document.querySelectorAll(".origin"); for (var i = 0; i < origins.length; i++) origins[i].textContent = origin; var no = window.document.getElementById("no"); var yes = window.document.getElementById("yes"); function detach() { no.removeEventListener("click", onDeny, false); yes.removeEventListener("click", onAccept, false); } function onDeny() { detach(); cb({granted: false}); } function onAccept() { detach(); config.trustedOrigins.push(origin); Config.setValue(config); cb({granted: true}); } no.addEventListener("click", onDeny, false); yes.addEventListener("click", onAccept, false); } } }; var server = new Summit.Server(handlers); window.opener.postMessage("ready", "*"); } )(window);