@cocalc/hub
Version:
CoCalc: Backend webserver component
26 lines (21 loc) • 1.06 kB
text/typescript
import Cookies from "cookies";
import { Router } from "express";
import { getLogger } from "@cocalc/hub/logger";
const { COOKIE_OPTIONS } = require("@cocalc/hub/client"); // import { COOKIE_OPTIONS } from "@cocalc/hub/client";
export default function init(router : Router) {
const winston = getLogger("set-cookie");
router.get("/cookies", (req, res) => {
if (req.query.set) {
// TODO: implement setting maxAge as part of query? not needed for now.
const maxAge = 1000 * 24 * 3600 * 30 * 6; // 6 months -- long is fine now since we support "sign out everywhere" ?
winston.debug(`${req.query.set}=${req.query.value}`);
// The option { secure: true } is needed if SSL happens outside the hub; see
// https://github.com/pillarjs/cookies/issues/51#issuecomment-568182639
const cookies = new Cookies(req, res, { secure: true });
const conf = { ...COOKIE_OPTIONS, maxAge };
winston.debug(`conf=${JSON.stringify(conf)}`);
cookies.set(req.query.set, req.query.value, conf);
}
res.end();
});
}