in Apps/W1/ClientAddIns/src/oauth/js/OAuthIntegration.js [70:162]
function OauthLandingHelper(url, key, callback) {
var w = top.window;
var aadWindow = w.open(url, '_blank', 'width=972,height=904,location=no');
if (aadWindow == null || aadWindow.closed || typeof aadWindow.closed === "undefined") {
callback({
error: "Popup blocked",
desc: "There was a problem opening the authentication prompt. Check if it was blocked by a popup blocker."
});
return;
}
function storageEvent(e) {
if (e.key === key && e.newValue) {
w.removeEventListener('storage', storageEvent, false);
action(e.newValue);
}
}
function messageEvent(e) {
if (e.data.clientId) {
w.removeEventListener("message", messageEvent, false);
action(e.data);
}
}
function action(data) {
var obj = data;
if (typeof data === 'string') {
obj = JSON.parse(data);
}
callback(obj);
closeWindow();
}
function closeWindow() {
try {
w.removeEventListener("message", messageEvent, false);
w.removeEventListener('storage', storageEvent, false);
try {
if (aadWindow.onbeforeunload) {
aadWindow.onbeforeunload = null;
}
} catch (e) { }
if (w.localStorage.getItem(key)) {
w.localStorage.removeItem(key);
}
aadWindow.close();
} catch (ex) { }
}
function isCordova(win) {
if (typeof win !== 'undefined' && win) {
try {
// this can throw a 'Permission denied" exception in IE11
if (win.executeScript) { // if cordova. Is there a better way to detect?
return true;
}
}
catch (e) {
return false;
}
}
return false;
}
if (isCordova(aadWindow)) {
aadWindow.addEventListener("loadstop", function () {
function getDataFromWindow() {
aadWindow.executeScript(
{ code: "localStorage.getItem('" + AuthStatusKey + "');" },
function (data) {
if (data && data.length > 0 && data[0]) {
var value = data[0];
clearInterval(loop);
action(value);
}
}
);
};
var loop = setInterval(getDataFromWindow, 1000);
});
} else {
w.removeEventListener('storage', storageEvent, false);
w.addEventListener('storage', storageEvent, false);
w.removeEventListener('message', messageEvent, false);
w.addEventListener("message", messageEvent, false);
}
}