forest-express
Version:
Official package for all Forest Express Lianas
107 lines (100 loc) • 5.31 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var InconsistentSecretAndRenderingError = require('../utils/errors/authentication/inconsistent-secret-rendering-error');
var SecretNotFoundError = require('../utils/errors/authentication/secret-not-found-error');
var TwoFactorAuthenticationRequiredError = require('../utils/errors/authentication/two-factor-authentication-required-error');
var AuthorizationError = require('../utils/errors/authentication/authorization-error');
var AuthorizationFinder = /*#__PURE__*/function () {
/** @private @readonly @type {import('./forest-server-requester')} */
/** @private @readonly @type {import('./logger')} */
/** @private @readonly @type {import('../utils/error-messages')} */
/**
* @param {import('../context/init').Context} context
*/
function AuthorizationFinder(context) {
(0, _classCallCheck2["default"])(this, AuthorizationFinder);
(0, _defineProperty2["default"])(this, "forestServerRequester", void 0);
(0, _defineProperty2["default"])(this, "logger", void 0);
(0, _defineProperty2["default"])(this, "errorMessages", void 0);
this.forestServerRequester = context.forestServerRequester;
this.logger = context.logger;
this.errorMessages = context.errorMessages;
}
/**
* @private
* @param {Error} error
* @returns {Error}
*/
(0, _createClass2["default"])(AuthorizationFinder, [{
key: "_generateAuthenticationError",
value: function _generateAuthenticationError(error) {
var _error$jse_cause, _error$jse_cause$resp, _error$jse_cause$resp2;
switch (error.message) {
case this.errorMessages.SERVER_TRANSACTION.SECRET_AND_RENDERINGID_INCONSISTENT:
return new InconsistentSecretAndRenderingError();
case this.errorMessages.SERVER_TRANSACTION.SECRET_NOT_FOUND:
return new SecretNotFoundError();
default:
}
// eslint-disable-next-line camelcase
var serverErrors = error === null || error === void 0 ? void 0 : (_error$jse_cause = error.jse_cause) === null || _error$jse_cause === void 0 ? void 0 : (_error$jse_cause$resp = _error$jse_cause.response) === null || _error$jse_cause$resp === void 0 ? void 0 : (_error$jse_cause$resp2 = _error$jse_cause$resp.body) === null || _error$jse_cause$resp2 === void 0 ? void 0 : _error$jse_cause$resp2.errors;
var serverError = serverErrors && serverErrors[0];
if ((serverError === null || serverError === void 0 ? void 0 : serverError.name) === this.errorMessages.SERVER_TRANSACTION.names.TWO_FACTOR_AUTHENTICATION_REQUIRED) {
return new TwoFactorAuthenticationRequiredError();
}
if (serverError !== null && serverError !== void 0 && serverError.status) {
throw new AuthorizationError(serverError.status, serverError.detail);
}
return new Error();
}
/**
* @param {number|string} renderingId
* @param {string} environmentSecret
* @param {string} forestToken
*/
}, {
key: "authenticate",
value: function () {
var _authenticate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(renderingId, environmentSecret, forestToken) {
var headers, url, result, user, _error$jse_cause2;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
headers = {
'forest-token': forestToken
};
url = "/liana/v2/renderings/".concat(renderingId, "/authorization");
_context.prev = 2;
_context.next = 5;
return this.forestServerRequester.perform(url, environmentSecret, null, headers);
case 5:
result = _context.sent;
user = result.data.attributes;
user.id = result.data.id;
return _context.abrupt("return", user);
case 11:
_context.prev = 11;
_context.t0 = _context["catch"](2);
// eslint-disable-next-line camelcase
this.logger.error('Authorization error: ', (_context.t0 === null || _context.t0 === void 0 ? void 0 : (_error$jse_cause2 = _context.t0.jse_cause) === null || _error$jse_cause2 === void 0 ? void 0 : _error$jse_cause2.response.body) || _context.t0);
throw this._generateAuthenticationError(_context.t0);
case 15:
case "end":
return _context.stop();
}
}, _callee, this, [[2, 11]]);
}));
function authenticate(_x, _x2, _x3) {
return _authenticate.apply(this, arguments);
}
return authenticate;
}()
}]);
return AuthorizationFinder;
}();
module.exports = AuthorizationFinder;