@simulacrum/auth0-simulator
Version:
Run local instance of Auth0 API for local development and integration testing
59 lines (53 loc) • 2.01 kB
JavaScript
import jsesc from "jsesc";
export const webMessage = ({ state, code, redirect_uri, nonce, }) => {
let data = jsesc({
redirect_uri,
}, { json: true, isScriptContext: true });
return `
<html lang="en">
<head>
<title>Authorization Response</title>
</head>
<body>
<script ${nonce ? `nonce="${nonce}"` : ""} type="application/javascript">
(function(window, document) {
var data = ${data};
var targetOrigin = data.redirect_uri;
var webMessageRequest = {};
var authorizationResponse = {
type: "authorization_response",
response: {
"code":"${code}",
"state":"${state}"}
};
var mainWin = (window.opener) ? window.opener : window.parent;
if (webMessageRequest["web_message_uri"] && webMessageRequest["web_message_target"]) {
window.addEventListener("message", function(evt) {
if (evt.origin != targetOrigin) {
return;
}
switch (evt.data.type) {
case "relay_response":
var messageTargetWindow = evt.source.frames[webMessageRequest["web_message_target"]];
if (messageTargetWindow) {
messageTargetWindow.postMessage(authorizationResponse, webMessageRequest["web_message_uri"]);
window.close();
}
break;
}
}
);
mainWin.postMessage({
type: "relay_request"
}, targetOrigin);
} else {
mainWin.postMessage(authorizationResponse, targetOrigin);
}
})(this, this.document);
</script>
</body>
</html>
`;
};
//# sourceMappingURL=web-message.js.map