UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

107 lines (99 loc) 3.08 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); 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 EXPIRATION_IN_HOURS = 1; var PAST_DATE = new Date(0); var FOREST_SESSION_TOKEN = 'forest_session_token'; var REGEX_COOKIE_SESSION_TOKEN = new RegExp("".concat(FOREST_SESSION_TOKEN, "=([^;]*)")); var TokenService = /*#__PURE__*/function () { /** @private @readonly @type {import('jsonwebtoken')} */ /** * @param {import("../context/init").Context} context */ function TokenService(context) { (0, _classCallCheck2["default"])(this, TokenService); (0, _defineProperty2["default"])(this, "jsonwebtoken", void 0); this.jsonwebtoken = context.jsonwebtoken; } /** @returns {number} */ // eslint-disable-next-line class-methods-use-this (0, _createClass2["default"])(TokenService, [{ key: "expirationInHours", get: function get() { return EXPIRATION_IN_HOURS; } /** @returns {number} */ }, { key: "expirationInSeconds", get: function get() { return this.expirationInHours * 3600; } /** @returns {string} */ // eslint-disable-next-line class-methods-use-this }, { key: "forestCookieName", get: function get() { return FOREST_SESSION_TOKEN; } /** * @param {{ * id: number; * email: string; * first_name: string; * last_name: string; * teams: number[]; * }} user * @param {string|number} renderingId * @param {{ * authSecret: string * }} options * @returns string */ }, { key: "createToken", value: function createToken(user, renderingId, _ref) { var authSecret = _ref.authSecret; return this.jsonwebtoken.sign({ id: user.id, email: user.email, firstName: user.first_name, lastName: user.last_name, team: user.teams[0], role: user.role, tags: user.tags, permissionLevel: user.permission_level, renderingId: renderingId }, authSecret, { expiresIn: "".concat(this.expirationInHours, " hours") }); } // eslint-disable-next-line class-methods-use-this }, { key: "deleteToken", value: function deleteToken() { return { expires: PAST_DATE, httpOnly: true, secure: true, sameSite: 'none' }; } /** * @param {string} cookies */ // eslint-disable-next-line class-methods-use-this }, { key: "extractForestSessionToken", value: function extractForestSessionToken(cookies) { var forestSession = cookies.match(REGEX_COOKIE_SESSION_TOKEN); if (forestSession && forestSession[1]) { return forestSession[1]; } return null; } }]); return TokenService; }(); module.exports = TokenService;