diff --git a/apps/web/src/connectors/duo-redirect.ts b/apps/web/src/connectors/duo-redirect.ts index 715dc26b12..9e2dfa8f7d 100644 --- a/apps/web/src/connectors/duo-redirect.ts +++ b/apps/web/src/connectors/duo-redirect.ts @@ -8,29 +8,36 @@ window.addEventListener("load", () => { const client = getQsParam("client"); const code = getQsParam("code"); - if (client === "browser" || client === "web") { + if (client === "web") { const channel = new BroadcastChannel("duoResult"); channel.postMessage({ code: code }); channel.close(); - const handOffMessage = ("; " + document.cookie) - .split("; duoHandOffMessage=") - .pop() - .split(";") - .shift(); - - document.cookie = "duoHandOffMessage=;SameSite=strict;max-age=0"; - - const content = document.getElementById("content"); - content.innerHTML = ""; - - const p = document.createElement("p"); - p.className = "text-center"; - p.innerText = handOffMessage; - - content.appendChild(p); + processAndDisplayHandoffMessage(); + } else if (client === "browser") { + window.postMessage({ command: "duoResult", code: code }, "*"); + processAndDisplayHandoffMessage(); } else if (client === "mobile" || client === "desktop") { document.location.replace(mobileDesktopCallback + "?code=" + encodeURIComponent(code)); } }); + +function processAndDisplayHandoffMessage() { + const handOffMessage = ("; " + document.cookie) + .split("; duoHandOffMessage=") + .pop() + .split(";") + .shift(); + + document.cookie = "duoHandOffMessage=;SameSite=strict;max-age=0"; + + const content = document.getElementById("content"); + content.innerHTML = ""; + + const p = document.createElement("p"); + p.className = "text-center"; + p.innerText = handOffMessage; + + content.appendChild(p); +}