mirror of
https://github.com/bitwarden/browser
synced 2025-12-22 11:13:46 +00:00
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import * as DuoWebSDK from 'duo_web_sdk';
|
|
|
|
// tslint:disable-next-line
|
|
require('./duo.scss');
|
|
|
|
document.addEventListener('DOMContentLoaded', (event) => {
|
|
const frameElement = document.createElement('iframe');
|
|
frameElement.setAttribute('id', 'duo_iframe');
|
|
setFrameHeight();
|
|
document.body.appendChild(frameElement);
|
|
|
|
const hostParam = getQsParam('host');
|
|
const requestParam = getQsParam('request');
|
|
DuoWebSDK.init({
|
|
iframe: 'duo_iframe',
|
|
host: hostParam,
|
|
sig_request: requestParam,
|
|
submit_callback: (form: any) => {
|
|
invokeCSCode(form.elements.sig_response.value);
|
|
},
|
|
});
|
|
|
|
window.onresize = setFrameHeight;
|
|
|
|
function setFrameHeight() {
|
|
frameElement.style.height = window.innerHeight + 'px';
|
|
}
|
|
});
|
|
|
|
function getQsParam(name: string) {
|
|
const url = window.location.href;
|
|
name = name.replace(/[\[\]]/g, '\\$&');
|
|
const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
|
|
const results = regex.exec(url);
|
|
|
|
if (!results) {
|
|
return null;
|
|
}
|
|
if (!results[2]) {
|
|
return '';
|
|
}
|
|
|
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
}
|
|
|
|
function invokeCSCode(data: string) {
|
|
try {
|
|
(window as any).invokeCSharpAction(data);
|
|
} catch (err) { }
|
|
}
|