alapa
Version:
A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.
42 lines (41 loc) • 1.55 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.manageCookiesSession = void 0;
const model_1 = require("../../data/model");
const encryption_1 = require("../misc/encryption");
const utils_1 = require("../../utils");
const manageCookiesSession = async (req, res, next) => {
try {
if (req.cookies["app-session"]) {
const id = encryption_1.Encryption.decrypt(req.cookies["app-session"]);
const session = await model_1.SessionDatabase.findOneBy({
id: id ?? req.cookies["app-session"],
});
if (session) {
if (id != req.sessionID) {
await session.remove();
}
else if (session.expiredAt < Date.now()) {
await session.remove();
}
}
}
model_1.SessionDatabase.createQueryBuilder()
.delete()
.where("expiredAt < :now", { now: Date.now() })
.execute()
.catch((err) => utils_1.Logger.error(err));
const cookieExpires = new Date(60 * 60 * 60 * 24 * 360000 + Date.now()); //one year
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
res.cookie("-session", encryption_1.Encryption.encrypt(req.sessionID)),
{
expires: cookieExpires,
httpOnly: true,
};
}
catch (e) {
console.log(e);
}
next();
};
exports.manageCookiesSession = manageCookiesSession;
;