UNPKG

onions-node

Version:

onions-node backend

69 lines (60 loc) 1.55 kB
const session = require('express-session') const connectRedis = require('connect-redis') const redis = require('redis') const RedisClustr = require('redis-clustr') const createSessionStore = (redisConfig, logger) => { const RedisStore = connectRedis(session) const finalRedisConfig = redisConfig finalRedisConfig.legacyMode = true const db = parseInt(finalRedisConfig.db, 10) const port = parseInt(finalRedisConfig.port, 10) let client if (redisConfig.cluster) { client = new RedisClustr(finalRedisConfig) } else { client = redis.createClient({ ...finalRedisConfig, db, port, }) } return new RedisStore({ client }) } const createSessionMiddleware = (config, sessionStore, logger) => { const {sameSiteNone, sessionName, sessionSecret, cookieSetting, cookieMaxAge = 24 * 3600 * 1000} = config const creationOptions = { name: sessionName, secret: sessionSecret, resave: true, rolling: true, saveUninitialized: false, cookie: { maxAge: cookieMaxAge, }, } if (sameSiteNone) { creationOptions.cookie = { ...creationOptions.cookie, httpOnly: true, secure: true, sameSite: 'none' } } if (cookieSetting) { creationOptions.cookie = { ...creationOptions.cookie, ...cookieSetting, } } if (sessionStore) { creationOptions.store = sessionStore } const sessionMiddleware = session(creationOptions) return sessionMiddleware } module.exports = { createSessionMiddleware, createSessionStore }