@trap_stevo/legendarybuilderproreact-ui
Version:
The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton
1,061 lines • 46.5 kB
JavaScript
import _typeof from "@babel/runtime/helpers/typeof";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React, { createContext, useState, useEffect, useRef, useContext } from "react";
import axios from "axios";
import { HUDUniversalHUDUtilityManager, Delay } from "../HUDManagers/HUDUniversalHUDUtilityManager.js";
import { useHUDSession } from "./HUDSessionProvider.js";
import CryptoJS from "crypto-js";
import forge from "node-forge";
var CredentialsContext = /*#__PURE__*/createContext();
export var HUDVaultProvider = function HUDVaultProvider(_ref) {
var children = _ref.children,
rootURL = _ref.rootURL,
appName = _ref.appName;
var vaultP = HUDUniversalHUDUtilityManager.GenerateUUID() + "_" + HUDUniversalHUDUtilityManager.GenerateUTCDateDouble().toString();
var _useHUDSession = useHUDSession(),
sessionCache = _useHUDSession.sessionCache,
addToSessionCache = _useHUDSession.addToSessionCache,
getFromSessionCache = _useHUDSession.getFromSessionCache,
clearFromSessionCache = _useHUDSession.clearFromSessionCache;
var _useState = useState({}),
_useState2 = _slicedToArray(_useState, 2),
credentials = _useState2[0],
setCredentials = _useState2[1];
var vaultInterpreterID = useRef("legendarybuilderpro");
var useMasterKey = useRef(false);
var identifier = useRef("default");
var vaultedPassword = useRef(vaultP);
var vaultAccessKey = useRef(null);
var password = useRef(vaultP);
var token = useRef("");
var vsl = useRef(null);
var online = window.navigator.onLine;
var storePasswordsOffline = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var vPassword;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
vPassword = vaultedPassword.current ? vaultedPassword.current : password.current;
if (!(vsl.current !== null && vsl.current !== undefined)) {
_context.next = 5;
break;
}
_context.next = 4;
return vsl.current.setItem("vault-session-layer", {
"VaultSessionID": password.current,
"VaultedSessionID": vPassword
});
case 4:
return _context.abrupt("return");
case 5:
addToSessionCache(null, null, {
"VaultSessionID": password.current,
"VaultedSessionID": vPassword
});
return _context.abrupt("return");
case 7:
case "end":
return _context.stop();
}
}, _callee);
}));
return function storePasswordsOffline() {
return _ref2.apply(this, arguments);
};
}();
var removePasswords = function removePasswords() {
if (vsl.current !== null && vsl.current !== undefined) {
return;
}
clearFromSessionCache("VaultedSessionID");
clearFromSessionCache("VaultSessionID");
return;
};
var loadPasswords = /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
var storedSessionCredentials, _storedVPassword, _storedPassword, _storedVPassword2, _storedPassword2, storedVPassword, storedPassword;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
if (!(vsl.current !== null && vsl.current !== undefined)) {
_context2.next = 13;
break;
}
_context2.next = 3;
return vsl.current.getItem("vault-session-layer");
case 3:
storedSessionCredentials = _context2.sent;
if (!(storedSessionCredentials === null)) {
_context2.next = 9;
break;
}
_storedVPassword = getFromSessionCache("VaultedSessionID");
_storedPassword = getFromSessionCache("VaultSessionID");
mintPasswords(_storedVPassword, _storedPassword);
return _context2.abrupt("return");
case 9:
_storedVPassword2 = storedSessionCredentials.VaultedSessionID;
_storedPassword2 = storedSessionCredentials.VaultSessionID;
mintPasswords(_storedVPassword2, _storedPassword2);
return _context2.abrupt("return");
case 13:
storedVPassword = getFromSessionCache("VaultedSessionID");
storedPassword = getFromSessionCache("VaultSessionID");
mintPasswords(storedVPassword, storedPassword);
return _context2.abrupt("return");
case 17:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function loadPasswords() {
return _ref3.apply(this, arguments);
};
}();
var mintPasswords = function mintPasswords(storedVPassword, storedPassword) {
if (storedVPassword !== null) {
vaultedPassword.current = storedVPassword;
} else if (storedVPassword === null && storedPassword !== null) {
vaultedPassword.current = storedPassword;
}
if (storedPassword !== null) {
password.current = storedPassword;
}
};
var generateVaultAccess = /*#__PURE__*/function () {
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
var inputAppName,
clientID,
clientAuthConfigID,
currentClientAuthorization,
currentPassword,
response,
_args3 = arguments;
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
inputAppName = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
clientID = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : "";
clientAuthConfigID = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : "";
_context3.prev = 3;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context3.next = 8;
return axios.post("".concat(rootURL, "/legendary-vault/access-utilities/generate/keys/").concat(inputAppName === null ? appName : inputAppName), {}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 8:
response = _context3.sent;
if (!(response.status >= 200 && response.status < 300)) {
_context3.next = 11;
break;
}
return _context3.abrupt("return", true);
case 11:
return _context3.abrupt("return", false);
case 14:
_context3.prev = 14;
_context3.t0 = _context3["catch"](3);
console.error("Did not download the vault access file: ", _context3.t0);
case 17:
case "end":
return _context3.stop();
}
}, _callee3, null, [[3, 14]]);
}));
return function generateVaultAccess() {
return _ref4.apply(this, arguments);
};
}();
var downloadVaultAccess = /*#__PURE__*/function () {
var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
var inputAppName,
response,
_args4 = arguments;
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
inputAppName = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : null;
_context4.prev = 1;
_context4.next = 4;
return axios.get("".concat(rootURL, "/legendary-vault/access-utilities/download/key/").concat(inputAppName === null ? appName : inputAppName), {
responseType: "text"
});
case 4:
response = _context4.sent;
if (response.data !== null) {
vaultAccessKey.current = response.data;
}
return _context4.abrupt("return");
case 9:
_context4.prev = 9;
_context4.t0 = _context4["catch"](1);
console.error("Did not download the vault access file: ", _context4.t0);
case 12:
case "end":
return _context4.stop();
}
}, _callee4, null, [[1, 9]]);
}));
return function downloadVaultAccess() {
return _ref5.apply(this, arguments);
};
}();
var interpretVaultSerializedData = function interpretVaultSerializedData(data) {
var iterations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000;
try {
console.log("Interpreting vault serialized data...");
if (data === null) {
console.log("Did not interpret vault serialized data. Input data null.");
return null;
}
var _data$split = data.split(":"),
_data$split2 = _slicedToArray(_data$split, 2),
ivHex = _data$split2[0],
encryptedData = _data$split2[1];
if (!ivHex || !encryptedData) {
console.error("Did not interpret vault serialized data. Invalid data format.");
return null;
}
var key = CryptoJS.PBKDF2(password.current, CryptoJS.enc.Utf8.parse(vaultInterpreterID.current), {
keySize: 256 / 32,
iterations: iterations,
hasher: CryptoJS.algo.SHA256
});
var iv = CryptoJS.enc.Hex.parse(ivHex);
var decrypted = CryptoJS.AES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse(encryptedData)
}, key, {
iv: iv,
mode: CryptoJS.mode.CTR,
padding: CryptoJS.pad.NoPadding
});
var decryptedData;
try {
decryptedData = decrypted.toString(CryptoJS.enc.Utf8);
console.log("Interpreted UTF-8 String: ", Object.keys(JSON.parse(decryptedData)));
} catch (decryptionError) {
decryptedData = decrypted.toString(CryptoJS.enc.Hex);
console.log("Returning Hex representation instead: ", decryptionError);
}
console.log("Successfully interpreted vault serialized data!");
return decryptedData;
} catch (error) {
console.error("Did not interpret vault serialized data: ", error);
return null;
}
};
var vaultifyData = function vaultifyData(data) {
if (!vaultAccessKey.current) {
console.error("Public key not loaded.");
return null;
}
var vAccessKey = forge.pki.publicKeyFromPem(vaultAccessKey.current);
var encrypted = vAccessKey.encrypt(data, 'RSA-OAEP', {
md: forge.md.sha256.create()
});
return forge.util.encode64(encrypted);
};
var vaultifyClientAccessAuthorization = function vaultifyClientAccessAuthorization() {
var clientID = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var clientAuthConfigID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
var currentClientAuthConfigID = clientAuthConfigID.trim() !== "" ? vaultifyData(clientAuthConfigID) : clientAuthConfigID;
var currentClientID = clientID.trim() !== "" ? vaultifyData(clientID) : clientID;
return [currentClientID === null ? clientID : currentClientID, currentClientAuthConfigID === null ? clientAuthConfigID : currentClientAuthConfigID];
};
var handleOnline = /*#__PURE__*/function () {
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
var localSync,
vaultedData,
sessionBased,
accessCredentials,
clientID,
clientAuthConfigID,
synced,
vaultedCredentials,
_args5 = arguments;
return _regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
localSync = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : true;
vaultedData = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : null;
sessionBased = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : false;
accessCredentials = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : true;
clientID = _args5.length > 4 && _args5[4] !== undefined ? _args5[4] : "";
clientAuthConfigID = _args5.length > 5 && _args5[5] !== undefined ? _args5[5] : "";
_context5.next = 8;
return loadPasswords();
case 8:
_context5.next = 10;
return Delay(269);
case 10:
if (sessionBased) {
_context5.next = 26;
break;
}
if (!(localSync && vaultedData)) {
_context5.next = 17;
break;
}
_context5.next = 14;
return syncLocalCredentials(vaultedData, clientID, clientAuthConfigID);
case 14:
_context5.t0 = _context5.sent;
_context5.next = 20;
break;
case 17:
_context5.next = 19;
return syncCredentials(clientID, clientAuthConfigID);
case 19:
_context5.t0 = _context5.sent;
case 20:
synced = _context5.t0;
if (synced[0] || synced) {
console.log("Successfully accessed the application's vault!");
removePasswords();
}
_context5.next = 24;
return syncToCredentials(clientID, clientAuthConfigID);
case 24:
vaultedCredentials = _context5.sent;
return _context5.abrupt("return", vaultedCredentials);
case 26:
_context5.next = 28;
return updatePassword(localSync, vaultedData, accessCredentials, clientID, clientAuthConfigID);
case 28:
return _context5.abrupt("return", _context5.sent);
case 29:
case "end":
return _context5.stop();
}
}, _callee5);
}));
return function handleOnline() {
return _ref6.apply(this, arguments);
};
}();
var handleOffline = /*#__PURE__*/function () {
var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
return _regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return storePasswordsOffline();
case 2:
return _context6.abrupt("return");
case 3:
case "end":
return _context6.stop();
}
}, _callee6);
}));
return function handleOffline() {
return _ref7.apply(this, arguments);
};
}();
var vaultOffline = /*#__PURE__*/function () {
var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
return _regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return handleOffline();
case 2:
return _context7.abrupt("return");
case 3:
case "end":
return _context7.stop();
}
}, _callee7);
}));
return function vaultOffline() {
return _ref8.apply(this, arguments);
};
}();
var vaultOnline = /*#__PURE__*/function () {
var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {
var local,
vaultedData,
sessionBased,
accessCredentials,
clientID,
clientAuthConfigID,
vaultedCredentials,
_args8 = arguments;
return _regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
local = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : true;
vaultedData = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : null;
sessionBased = _args8.length > 2 && _args8[2] !== undefined ? _args8[2] : false;
accessCredentials = _args8.length > 3 && _args8[3] !== undefined ? _args8[3] : true;
clientID = _args8.length > 4 && _args8[4] !== undefined ? _args8[4] : "";
clientAuthConfigID = _args8.length > 5 && _args8[5] !== undefined ? _args8[5] : "";
if (!online) {
_context8.next = 11;
break;
}
_context8.next = 9;
return handleOnline(local, vaultedData, sessionBased, accessCredentials, clientID, clientAuthConfigID);
case 9:
vaultedCredentials = _context8.sent;
return _context8.abrupt("return", vaultedCredentials);
case 11:
_context8.next = 13;
return handleOffline();
case 13:
return _context8.abrupt("return", null);
case 14:
case "end":
return _context8.stop();
}
}, _callee8);
}));
return function vaultOnline() {
return _ref9.apply(this, arguments);
};
}();
var saveCredential = /*#__PURE__*/function () {
var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(key, value) {
var storeInRemoteVault,
storeWithMasterKey,
currentIdentifier,
clientID,
clientAuthConfigID,
savingIdentifier,
_args10 = arguments;
return _regeneratorRuntime.wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
case 0:
storeInRemoteVault = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : true;
storeWithMasterKey = _args10.length > 3 && _args10[3] !== undefined ? _args10[3] : false;
currentIdentifier = _args10.length > 4 && _args10[4] !== undefined ? _args10[4] : "useIdentifier";
clientID = _args10.length > 5 && _args10[5] !== undefined ? _args10[5] : "";
clientAuthConfigID = _args10.length > 6 && _args10[6] !== undefined ? _args10[6] : "";
setCredentials(function (prevCredentials) {
return _objectSpread(_objectSpread({}, prevCredentials), {}, _defineProperty({}, key, value));
});
savingIdentifier = currentIdentifier === "useIdentifier" ? identifier.current : currentIdentifier;
return _context10.abrupt("return", new Promise(function (resolve, reject) {
updateUseMasterKey(storeWithMasterKey, function () {
updateIdentifier(savingIdentifier, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
var currentClientAuthorization, currentPassword, credential;
return _regeneratorRuntime.wrap(function _callee9$(_context9) {
while (1) switch (_context9.prev = _context9.next) {
case 0:
_context9.prev = 0;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context9.next = 5;
return axios.post("".concat(rootURL, "/legendary-vault/credentials/").concat(savingIdentifier), {
password: currentPassword,
key: key,
value: value,
appName: appName,
storeInRemoteVault: storeInRemoteVault,
useMasterKey: storeWithMasterKey
}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 5:
credential = _context9.sent;
if (!credential.data) {
_context9.next = 9;
break;
}
resolve(credential.data);
return _context9.abrupt("return");
case 9:
resolve(null);
return _context9.abrupt("return");
case 13:
_context9.prev = 13;
_context9.t0 = _context9["catch"](0);
console.log(_context9.t0);
resolve(null);
return _context9.abrupt("return");
case 18:
case "end":
return _context9.stop();
}
}, _callee9, null, [[0, 13]]);
})));
});
}));
case 8:
case "end":
return _context10.stop();
}
}, _callee10);
}));
return function saveCredential(_x, _x2) {
return _ref10.apply(this, arguments);
};
}();
var clearCredential = /*#__PURE__*/function () {
var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(key) {
var storeInRemoteVault,
clientID,
clientAuthConfigID,
currentClientAuthorization,
currentPassword,
_args11 = arguments;
return _regeneratorRuntime.wrap(function _callee11$(_context11) {
while (1) switch (_context11.prev = _context11.next) {
case 0:
storeInRemoteVault = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : true;
clientID = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : "";
clientAuthConfigID = _args11.length > 3 && _args11[3] !== undefined ? _args11[3] : "";
setCredentials(function (prevCredentials) {
var removed = prevCredentials[key],
remainingCredentials = _objectWithoutProperties(prevCredentials, [key].map(_toPropertyKey));
return remainingCredentials;
});
_context11.prev = 4;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context11.next = 9;
return axios["delete"]("".concat(rootURL, "/legendary-vault/credentials/").concat(identifier.current, "/").concat(key), {
data: {
password: currentPassword,
appName: appName,
storeInRemoteVault: storeInRemoteVault,
centralized: useMasterKey.current ? true : false,
useMasterKey: useMasterKey.current
},
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 9:
return _context11.abrupt("return");
case 12:
_context11.prev = 12;
_context11.t0 = _context11["catch"](4);
console.log(_context11.t0);
return _context11.abrupt("return");
case 16:
case "end":
return _context11.stop();
}
}, _callee11, null, [[4, 12]]);
}));
return function clearCredential(_x3) {
return _ref12.apply(this, arguments);
};
}();
var syncToCredentials = /*#__PURE__*/function () {
var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
var clientID,
clientAuthConfigID,
currentClientAuthorization,
currentPassword,
response,
data,
interpretedCredentials,
_args12 = arguments;
return _regeneratorRuntime.wrap(function _callee12$(_context12) {
while (1) switch (_context12.prev = _context12.next) {
case 0:
clientID = _args12.length > 0 && _args12[0] !== undefined ? _args12[0] : "";
clientAuthConfigID = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : "";
_context12.prev = 2;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context12.next = 7;
return axios.get("".concat(rootURL, "/legendary-vault/credentials/").concat(identifier.current), {
params: {
password: currentPassword,
appName: appName,
centralized: useMasterKey.current ? true : false,
useMasterKey: useMasterKey.current
},
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 7:
response = _context12.sent;
data = response.data;
if (!(data && data.vData)) {
_context12.next = 14;
break;
}
console.log("Synced to stored credentials!");
interpretedCredentials = JSON.parse(interpretVaultSerializedData(data.vData));
setCredentials(interpretedCredentials);
return _context12.abrupt("return", [true, interpretedCredentials]);
case 14:
console.log("Did not sync to stored credentials....");
return _context12.abrupt("return", [false, null]);
case 18:
_context12.prev = 18;
_context12.t0 = _context12["catch"](2);
console.log(_context12.t0);
return _context12.abrupt("return", [false, null]);
case 22:
case "end":
return _context12.stop();
}
}, _callee12, null, [[2, 18]]);
}));
return function syncToCredentials() {
return _ref13.apply(this, arguments);
};
}();
var syncLocalCredentials = /*#__PURE__*/function () {
var _ref14 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13() {
var vaultedData,
clientID,
clientAuthConfigID,
currentClientAuthorization,
currentVPassword,
currentPassword,
response,
_args13 = arguments;
return _regeneratorRuntime.wrap(function _callee13$(_context13) {
while (1) switch (_context13.prev = _context13.next) {
case 0:
vaultedData = _args13.length > 0 && _args13[0] !== undefined ? _args13[0] : null;
clientID = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : "";
clientAuthConfigID = _args13.length > 2 && _args13[2] !== undefined ? _args13[2] : "";
_context13.prev = 3;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentVPassword = vaultifyData(vaultedPassword.current);
currentPassword = vaultifyData(password.current);
_context13.next = 9;
return axios.post("".concat(rootURL, "/legendary-vault/credentials/sync/").concat(identifier.current), {
vPassword: currentVPassword,
password: currentPassword,
storeInRemoteVault: false,
centralized: useMasterKey.current ? true : false,
useMasterKey: useMasterKey.current,
vaultedData: vaultedData,
appName: appName
}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentVPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 9:
response = _context13.sent;
if (!(response.status === 200 && response.data.synced)) {
_context13.next = 15;
break;
}
vaultedPassword.current = password.current;
return _context13.abrupt("return", [true, response.data.syncedCredentials]);
case 15:
throw new Error("Did not sync local credentials with updated vault protection measures.");
case 16:
_context13.next = 22;
break;
case 18:
_context13.prev = 18;
_context13.t0 = _context13["catch"](3);
console.log(_context13.t0);
return _context13.abrupt("return", [false, null]);
case 22:
case "end":
return _context13.stop();
}
}, _callee13, null, [[3, 18]]);
}));
return function syncLocalCredentials() {
return _ref14.apply(this, arguments);
};
}();
var syncCredentials = /*#__PURE__*/function () {
var _ref15 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14() {
var clientID,
clientAuthConfigID,
currentClientAuthorization,
currentVPassword,
currentPassword,
response,
_args14 = arguments;
return _regeneratorRuntime.wrap(function _callee14$(_context14) {
while (1) switch (_context14.prev = _context14.next) {
case 0:
clientID = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : "";
clientAuthConfigID = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : "";
_context14.prev = 2;
console.log("Syncing credentials....");
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentVPassword = vaultifyData(vaultedPassword.current);
currentPassword = vaultifyData(password.current);
_context14.next = 9;
return axios.post("".concat(rootURL, "/legendary-vault/credentials/sync/").concat(identifier.current), {
vPassword: currentVPassword,
password: currentPassword,
storeInRemoteVault: true,
vaultedData: null,
centralized: useMasterKey.current ? true : false,
useMasterKey: useMasterKey.current,
appName: appName
}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentVPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 9:
response = _context14.sent;
if (!(response.status === 200 && response.data.synced)) {
_context14.next = 16;
break;
}
console.log("Successfully synced credentials!");
vaultedPassword.current = password.current;
return _context14.abrupt("return", true);
case 16:
throw new Error("Did not sync credentials with updated vault protection measures.");
case 17:
_context14.next = 23;
break;
case 19:
_context14.prev = 19;
_context14.t0 = _context14["catch"](2);
console.log(_context14.t0);
return _context14.abrupt("return", false);
case 23:
case "end":
return _context14.stop();
}
}, _callee14, null, [[2, 19]]);
}));
return function syncCredentials() {
return _ref15.apply(this, arguments);
};
}();
var generateToken = /*#__PURE__*/function () {
var _ref16 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15() {
var clientID,
clientAuthConfigID,
currentClientAuthorization,
currentPassword,
response,
data,
_args15 = arguments;
return _regeneratorRuntime.wrap(function _callee15$(_context15) {
while (1) switch (_context15.prev = _context15.next) {
case 0:
clientID = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : "";
clientAuthConfigID = _args15.length > 1 && _args15[1] !== undefined ? _args15[1] : "";
_context15.prev = 2;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context15.next = 7;
return axios.post("".concat(rootURL, "/legendary-vault/credentials/token/").concat(identifier.current), {
appName: appName
}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 7:
response = _context15.sent;
data = response.data;
token.current = data.token;
return _context15.abrupt("return", data.token);
case 13:
_context15.prev = 13;
_context15.t0 = _context15["catch"](2);
console.log(_context15.t0);
return _context15.abrupt("return", null);
case 17:
case "end":
return _context15.stop();
}
}, _callee15, null, [[2, 13]]);
}));
return function generateToken() {
return _ref16.apply(this, arguments);
};
}();
var getRawCredentials = /*#__PURE__*/function () {
var _ref17 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee16() {
var inputToken,
clientID,
clientAuthConfigID,
currentToken,
currentClientAuthorization,
currentPassword,
vaultedToken,
response,
data,
_args16 = arguments;
return _regeneratorRuntime.wrap(function _callee16$(_context16) {
while (1) switch (_context16.prev = _context16.next) {
case 0:
inputToken = _args16.length > 0 && _args16[0] !== undefined ? _args16[0] : undefined;
clientID = _args16.length > 1 && _args16[1] !== undefined ? _args16[1] : "";
clientAuthConfigID = _args16.length > 2 && _args16[2] !== undefined ? _args16[2] : "";
_context16.prev = 3;
currentToken = inputToken !== undefined && inputToken !== null ? inputToken : token.current;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
vaultedToken = vaultifyData(currentToken);
_context16.next = 10;
return axios.get("".concat(rootURL, "/legendary-vault/credentials/raw/").concat(identifier.current), {
params: {
token: vaultedToken,
appName: appName
},
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 10:
response = _context16.sent;
data = response.data;
return _context16.abrupt("return", data ? data : {});
case 15:
_context16.prev = 15;
_context16.t0 = _context16["catch"](3);
console.log(_context16.t0);
return _context16.abrupt("return", {});
case 19:
case "end":
return _context16.stop();
}
}, _callee16, null, [[3, 15]]);
}));
return function getRawCredentials() {
return _ref17.apply(this, arguments);
};
}();
var sendVaultedData = /*#__PURE__*/function () {
var _ref18 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17(vaultedData) {
var clientID,
clientAuthConfigID,
currentClientAuthorization,
currentPassword,
response,
decryptedData,
_args17 = arguments;
return _regeneratorRuntime.wrap(function _callee17$(_context17) {
while (1) switch (_context17.prev = _context17.next) {
case 0:
clientID = _args17.length > 1 && _args17[1] !== undefined ? _args17[1] : "";
clientAuthConfigID = _args17.length > 2 && _args17[2] !== undefined ? _args17[2] : "";
_context17.prev = 2;
currentClientAuthorization = vaultifyClientAccessAuthorization(clientID, clientAuthConfigID);
currentPassword = vaultifyData(password.current);
_context17.next = 7;
return axios.post("".concat(rootURL, "/legendary-vault/credentials/unlock/").concat(identifier.current), {
password: currentPassword,
centralized: useMasterKey.current ? true : false,
useMasterKey: useMasterKey.current,
vaultedData: vaultedData,
appName: appName
}, {
headers: {
"Content-Type": "application/json",
"x-config-name": currentClientAuthorization[1],
"x-custom-auth": currentClientAuthorization[0].trim() !== "" ? currentClientAuthorization[0] + "[::||::]" + currentPassword : currentClientAuthorization[0],
"x-vault-app": appName
}
});
case 7:
response = _context17.sent;
decryptedData = response.data;
return _context17.abrupt("return", decryptedData);
case 12:
_context17.prev = 12;
_context17.t0 = _context17["catch"](2);
console.log(_context17.t0);
return _context17.abrupt("return", null);
case 16:
case "end":
return _context17.stop();
}
}, _callee17, null, [[2, 12]]);
}));
return function sendVaultedData(_x4) {
return _ref18.apply(this, arguments);
};
}();
var updateUseMasterKey = function updateUseMasterKey(value, callback) {
useMasterKey.current = value;
if (callback && typeof callback === "function") {
callback();
}
};
var updateIdentifier = function updateIdentifier(value, callback) {
identifier.current = value;
if (callback && typeof callback === "function") {
callback();
}
};
var updatePassword = /*#__PURE__*/function () {
var _ref19 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee18() {
var localSync,
vaultedData,
accessCredentials,
clientID,
clientAuthConfigID,
newPassword,
synced,
vaultedCredentials,
remoteCredentials,
_args18 = arguments;
return _regeneratorRuntime.wrap(function _callee18$(_context18) {
while (1) switch (_context18.prev = _context18.next) {
case 0:
localSync = _args18.length > 0 && _args18[0] !== undefined ? _args18[0] : true;
vaultedData = _args18.length > 1 && _args18[1] !== undefined ? _args18[1] : null;
accessCredentials = _args18.length > 2 && _args18[2] !== undefined ? _args18[2] : true;
clientID = _args18.length > 3 && _args18[3] !== undefined ? _args18[3] : "";
clientAuthConfigID = _args18.length > 4 && _args18[4] !== undefined ? _args18[4] : "";
newPassword = HUDUniversalHUDUtilityManager.GenerateUUID() + "_" + HUDUniversalHUDUtilityManager.GenerateUTCDateDouble().toString();
vaultedPassword.current = password.current;
_context18.next = 9;
return Delay(269);
case 9:
password.current = newPassword;
_context18.next = 12;
return Delay(269);
case 12:
if (!(localSync && vaultedData)) {
_context18.next = 18;
break;
}
_context18.next = 15;
return syncLocalCredentials(vaultedData, clientID, clientAuthConfigID);
case 15:
_context18.t0 = _context18.sent;
_context18.next = 21;
break;
case 18:
_context18.next = 20;
return syncCredentials(clientID, clientAuthConfigID);
case 20:
_context18.t0 = _context18.sent;
case 21:
synced = _context18.t0;
if (synced[0] || synced === true) {
console.log("Successfully accessed the application's vault!");
removePasswords();
}
if (accessCredentials) {
_context18.next = 25;
break;
}
return _context18.abrupt("return", null);
case 25:
if (!(localSync && synced[0])) {
_context18.next = 30;
break;
}
_context18.next = 28;
return sendVaultedData(synced[1], clientID, clientAuthConfigID);
case 28:
vaultedCredentials = _context18.sent;
return _context18.abrupt("return", [interpretVaultSerializedData(vaultedCredentials.vData), synced[1]]);
case 30:
if (!(localSync === false && synced)) {
_context18.next = 35;
break;
}
_context18.next = 33;
return syncToCredentials(clientID, clientAuthConfigID);
case 33:
remoteCredentials = _context18.sent;
return _context18.abrupt("return", [remoteCredentials, synced]);
case 35:
return _context18.abrupt("return", [null, false]);
case 36:
case "end":
return _context18.stop();
}
}, _callee18);
}));
return function updatePassword() {
return _ref19.apply(this, arguments);
};
}();
useEffect(function () {
window.addEventListener("offline", vaultOffline);
window.addEventListener("online", handleOnline);
return function () {
window.removeEventListener("offline", vaultOffline);
window.removeEventListener("online", handleOnline);
};
}, [identifier, vaultedPassword, password]);
useEffect(function () {
if (online) {
loadPasswords();
}
window.addEventListener("beforeunload", vaultOffline);
return function () {
window.removeEventListener("beforeunload", vaultOffline);
};
}, [online]);
return /*#__PURE__*/React.createElement(CredentialsContext.Provider, {
value: {
credentials: credentials,
saveCredential: saveCredential,
clearCredential: clearCredential,
interpretVaultSerializedData: interpretVaultSerializedData,
syncLocalCredentials: syncLocalCredentials,
syncToCredentials: syncToCredentials,
syncCredentials: syncCredentials,
sendVaultedData: sendVaultedData,
updatePassword: updatePassword,
vaultOffline: vaultOffline,
vaultOnline: vaultOnline,
downloadVaultAccess: downloadVaultAccess,
generateVaultAccess: generateVaultAccess,
updateUseMasterKey: updateUseMasterKey,
updateIdentifier: updateIdentifier,
getRawCredentials: getRawCredentials,
generateToken: generateToken,
vsl: vsl
}
}, children);
};
export var useHUDVault = function useHUDVault() {
var context = useContext(CredentialsContext);
if (!context) {
throw new Error('Must use within an HUDSessionProvider > HUDVaultProvider');
}
return context;
};