UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

107 lines (100 loc) 5.31 kB
"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;