UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

107 lines (100 loc) 4.35 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 OidcClientManagerService = /*#__PURE__*/function () { /** * @private @readonly * @type {Map<string, Promise<import('openid-client').Client>>} */ /** @private @readonly */ /** @private @readonly */ /** @private @readonly */ /** @private @readonly */ /** * @param {import('../context/init').Context} dependencies */ function OidcClientManagerService(_ref) { var oidcConfigurationRetrieverService = _ref.oidcConfigurationRetrieverService, openIdClient = _ref.openIdClient, env = _ref.env, logger = _ref.logger, configStore = _ref.configStore; (0, _classCallCheck2["default"])(this, OidcClientManagerService); (0, _defineProperty2["default"])(this, "cache", new Map()); (0, _defineProperty2["default"])(this, "oidcConfigurationRetrieverService", void 0); (0, _defineProperty2["default"])(this, "openIdClient", void 0); (0, _defineProperty2["default"])(this, "env", void 0); (0, _defineProperty2["default"])(this, "logger", void 0); this.oidcConfigurationRetrieverService = oidcConfigurationRetrieverService; this.openIdClient = openIdClient; this.env = env; this.logger = logger; this.configStore = configStore; } /** * @param {string} callbackUrl * @returns {Promise<import('openid-client').Client>} */ (0, _createClass2["default"])(OidcClientManagerService, [{ key: "getClientForCallbackUrl", value: function () { var _getClientForCallbackUrl = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(callbackUrl) { var _this = this; var configuration, issuer, clientId, envSecret, registration, registrationPromise; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (this.cache.has(callbackUrl)) { _context.next = 10; break; } _context.next = 3; return this.oidcConfigurationRetrieverService.retrieve(); case 3: configuration = _context.sent; issuer = new this.openIdClient.Issuer(configuration); clientId = this.configStore.lianaOptions.clientId || this.env.FOREST_CLIENT_ID || undefined; envSecret = this.configStore.lianaOptions.envSecret || this.env.FOREST_ENV_SECRET; registration = { client_id: clientId, redirect_uris: [callbackUrl], token_endpoint_auth_method: 'none' }; registrationPromise = clientId ? new issuer.Client(registration) : issuer.Client.register(registration, { initialAccessToken: envSecret })["catch"](function (error) { _this.logger.error('Unable to register the client', { configuration: configuration, registration: registration, error: error }); _this.cache["delete"](callbackUrl); throw error; }); this.cache.set(callbackUrl, registrationPromise); case 10: return _context.abrupt("return", this.cache.get(callbackUrl)); case 11: case "end": return _context.stop(); } }, _callee, this); })); function getClientForCallbackUrl(_x) { return _getClientForCallbackUrl.apply(this, arguments); } return getClientForCallbackUrl; }() }, { key: "clearCache", value: function clearCache() { this.cache.clear(); } }]); return OidcClientManagerService; }(); module.exports = OidcClientManagerService;