clout-redis-session
Version:
Clout module to leverage Redis for sessions
52 lines (44 loc) • 1.31 kB
JavaScript
/*!
* clout-redis-session
* Copyright(c) 2015 - 2016 Muhammad Dadu
* MIT Licensed
*/
const
debug = require('debug')('clout-redis-session:hooks/middleware'),
session = require('express-session'),
RedisStore = require('connect-redis')(session);
module.exports = {
session: {
event: 'start',
override: true,
priority: 'MIDDLEWARE',
fn: function (next) {
let sessionConf = this.config.session || {};
let sessRedisConf = this.config.session.redis || {};
let redisConf = this.config.redis || {};
!sessionConf.key && (sessionConf.key = 'express.sid');
!sessionConf.saveUninitialized && (sessionConf.saveUninitialized = false);
if ((!sessionConf.host || sessRedisConf.host === '<REDIS_HOST>') && redisConf.host) {
Object.keys(redisConf).forEach(function (key) {
sessRedisConf[key] = redisConf[key];
});
}
if (sessRedisConf.host === '<REDIS_HOST>') {
this.logger.warn('Please update settings for redis session');
}
sessionConf.store = new RedisStore(sessRedisConf);
this.config.session = sessionConf;
this.app.session = session(sessionConf);
this.app.use(this.app.session);
next();
}
},
closeSession: {
event: 'stop',
priority: 1,
fn(next) {
this.config.session.store.client.quit();
next();
}
}
};