1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 00:03:56 +00:00

move duo connector to ts

This commit is contained in:
Kyle Spearrin
2018-06-08 10:15:45 -04:00
parent 6436bb65e2
commit 3db86e2a6b
6 changed files with 53 additions and 475 deletions

View File

@@ -1,43 +0,0 @@
require('../scripts/duo');
require('./duo.scss');
!(function () {
var frameElement = document.createElement('iframe');
frameElement.setAttribute('id', 'duo_iframe');
setFrameHeight();
document.body.appendChild(frameElement);
var hostParam = getQsParam('host');
var requestParam = getQsParam('request');
Duo.init({
host: hostParam,
sig_request: requestParam,
submit_callback: function (form) {
invokeCSCode(form.elements.sig_response.value);
}
});
window.onresize = setFrameHeight;
function setFrameHeight() {
frameElement.style.height = window.innerHeight + 'px';
}
})();
function getQsParam(name) {
var url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
function invokeCSCode(data) {
try {
invokeCSharpAction(data);
}
catch (err) {
}
}

50
src/connectors/duo.ts Normal file
View File

@@ -0,0 +1,50 @@
import * as DuoWebSDK from 'jslib/misc/duo';
// 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) { }
}