cloudworker-proxy
Version:
An api gateway for cloudflare workers
168 lines (131 loc) • 5.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAccessKeyForTenant = exports.createAccessKeyForTenant = undefined;
var _fetch = require('../fetch');
var _fetch2 = _interopRequireDefault(_fetch);
var _config = require('../config');
var _config2 = _interopRequireDefault(_config);
var _utils = require('../utils');
var utils = _interopRequireWildcard(_utils);
var _refreshToken = require('../login/refreshToken');
var _refreshToken2 = _interopRequireDefault(_refreshToken);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
/*
* Create Access Key For Tenant
*/
var createAccessKeyForTenant = function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(tenant, title) {
var user, response, data;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _refreshToken2.default)();
case 2:
user = utils.getLoggedInUser();
_context.next = 5;
return (0, _fetch2.default)(`${_config2.default.backendUrl}tenants/${tenant}/accessKeys`, {
method: 'POST',
body: JSON.stringify({
tenantName: tenant,
userName: user.username,
title: title || 'serverless_' + Math.round(+new Date() / 1000)
}),
headers: {
Authorization: `bearer ${user.idToken}`
}
});
case 5:
response = _context.sent;
_context.next = 8;
return response.json();
case 8:
data = _context.sent;
return _context.abrupt('return', data.secretAccessKey);
case 10:
case 'end':
return _context.stop();
}
}
}, _callee, undefined);
}));
return function createAccessKeyForTenant(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
/*
* Get Access Key For Tenant
* - Fetches the access key for the specified `tenant`
* - If an access key is present as an env var, that overrides all else
*/
var getAccessKeyForTenant = function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(tenant) {
var user;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!process.env.SERVERLESS_ACCESS_KEY) {
_context2.next = 2;
break;
}
return _context2.abrupt('return', process.env.SERVERLESS_ACCESS_KEY);
case 2:
if (tenant) {
_context2.next = 4;
break;
}
throw new Error('SDK: getAccessKeyForTenant() requires a "tenant".');
case 4:
_context2.next = 6;
return (0, _refreshToken2.default)();
case 6:
user = utils.getLoggedInUser();
// Check if in config file, if not, & if possible, create one
if (!(!user.accessKeys || !user.accessKeys[tenant])) {
_context2.next = 17;
break;
}
if (!user.idToken) {
_context2.next = 16;
break;
}
if (!user.accessKeys) {
user.accessKeys = {};
}
_context2.next = 12;
return createAccessKeyForTenant(tenant);
case 12:
user.accessKeys[tenant] = _context2.sent;
utils.writeConfigFile({
users: {
[user.userId]: {
dashboard: { accessKeys: { [tenant]: user.accessKeys[tenant] } }
}
}
});
_context2.next = 17;
break;
case 16:
throw new Error(`Could not find an access key for tenant ${tenant}. Log out and log in again to create a new acce ss key for this tenant.`);
case 17:
return _context2.abrupt('return', user.accessKeys[tenant]);
case 18:
case 'end':
return _context2.stop();
}
}
}, _callee2, undefined);
}));
return function getAccessKeyForTenant(_x3) {
return _ref2.apply(this, arguments);
};
}();
exports.createAccessKeyForTenant = createAccessKeyForTenant;
exports.getAccessKeyForTenant = getAccessKeyForTenant;
//# sourceMappingURL=accessKeys.js.map