UNPKG

@dwp/govuk-casa

Version:

A framework for building GOVUK Collect-And-Submit-Applications

48 lines 1.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = endSession; const logger_js_1 = __importDefault(require("./logger.js")); const log = (0, logger_js_1.default)("lib:end-session"); /** * A convenience for ending the current session, but retaining some data in it, * like the current language. It persists an empty session before regenerating a * new ID. * * Note: this will not remove the session from server-side storage, which will * instead be left up to the storage mechanism to clean up. * * @memberof module:@dwp/govuk-casa * @param {import("express").Request} req HTTP request * @param {Function} next Chain * @returns {void} */ function endSession(req, next) { const { language } = req.session; for (const key of Object.keys(req.session)) { if (!["cookie"].includes(key)) { // ESLint disabled as `Object.keys()` returns "own" properties, and // all values are being null'd, so not assigned any user-controlled values /* eslint-disable-next-line security/detect-object-injection */ req.session[key] = null; } } req.session.save((saveErr) => { if (saveErr) { log.error(saveErr); } req.session.regenerate((err) => { if (err) { log.error(err); next(err); } else { req.session.language = language; req.session.save(next); } }); }); } //# sourceMappingURL=end-session.js.map