55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
const session = require('express-session')
|
|
const RedisStore = require('connect-redis')(session)
|
|
const { secret, cookiesSecure } = require('../config/keys')
|
|
const redisClient = require('../models/cache')
|
|
|
|
const SESSION_DURATION = 1000 * 60 * 60 * 2 // 2 hours.
|
|
const SESSION_ID_COOKIE_NAME = 'sid'
|
|
// const RETRY_PERIOD = 3000 // 3 seconds.
|
|
|
|
const options = {
|
|
cookie: { maxAge: SESSION_DURATION, sameSite: 'lax', secure: cookiesSecure },
|
|
secret,
|
|
name: SESSION_ID_COOKIE_NAME,
|
|
rolling: true,
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
store: new RedisStore({ client: redisClient })
|
|
}
|
|
|
|
module.exports = session(options)
|
|
|
|
// Aditional checking logic below.
|
|
// Export it instead of the middleware above if it proves necessary.
|
|
|
|
// const sessionMiddleware = session(options)
|
|
|
|
// function verifiedSession(req, res, next) {
|
|
// let tries = 3
|
|
// let timeoutId
|
|
|
|
// function lookupSession(err) {
|
|
// clearTimeout(timeoutId)
|
|
|
|
// if (err) return next(err)
|
|
|
|
// if (req.session !== undefined) return next()
|
|
|
|
// tries -= 1
|
|
|
|
// if (tries < 0) {
|
|
// return next(Error('Session store unresponsive'))
|
|
// }
|
|
|
|
// sessionMiddleware(req, res, lookupSession)
|
|
|
|
// if (req.session === undefined) {
|
|
// timeoutId = setTimeout(lookupSession, RETRY_PERIOD)
|
|
// }
|
|
// }
|
|
|
|
// lookupSession()
|
|
// }
|
|
|
|
// module.exports = verifiedSession
|