1
0
mirror of https://github.com/keeweb/keeweb.git synced 2024-06-20 06:56:40 +02:00
keeweb/app/scripts/comp/auth-receiver.js
2019-08-18 10:17:09 +02:00

40 lines
1.2 KiB
JavaScript

const FeatureDetector = require('../util/feature-detector');
const Storage = require('../storage');
const AuthReceiver = {
receive() {
if (!FeatureDetector.isPopup && !FeatureDetector.isStandalone) {
return false;
}
const opener = window.opener || window.parent;
const message = this.urlArgsToMessage(window.location.href);
const hasKeys = Object.keys(message).filter(key => key !== 'config').length > 0;
if (!hasKeys) {
return false;
}
if (FeatureDetector.isStandalone) {
if (sessionStorage.authStorage) {
Storage[sessionStorage.authStorage].handleOAuthReturnMessage(message);
}
return false;
} else {
opener.postMessage(message, window.location.origin);
window.close();
return true;
}
},
urlArgsToMessage(url) {
const message = {};
url.split(/[?#&]/g).forEach(part => {
const parts = part.split('=');
if (parts.length === 2) {
message[parts[0]] = parts[1];
}
});
return message;
}
};
module.exports = AuthReceiver;