UNPKG

@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
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; };