dg-npm-templates
Version:
Npx generator for react app dependency creation by digite
54 lines (44 loc) • 1.51 kB
JavaScript
const sessions = require("express-session");
const MemoryStore = require("express-session").MemoryStore;
const RedisStore = require("connect-redis")(sessions);
const redis = require("redis");
global.store = null;
if (process.env.REDIS_HOST && process.env.REDIS_PORT) {
const client = redis.createClient({ legacyMode: true });
client.on("error", function (err) {
console.log("Could not establish a connection with redis for session.", err);
});
client.on("connect", function (err) {
if (err) {
console.log(err);
}
console.log("Connected to redis successfully for session");
});
client.connect().catch(console.error);
global.store = new RedisStore({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
auth_pass: process.env.REDIS_PASSWORD,
client
});
} else {
global.store = new MemoryStore();
}
const setupSession = app => {
app.use(
sessions({
store: global.store,
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {
secure: process.env.PROD !== "false" ? true : false, // if true only transmit cookie over https
httpOnly: true, // if true prevent client side JS from reading the cookie
maxAge: 1000 * 60 * 60 * 24 // session max age in miliseconds
}
})
);
};
module.exports = {
setupSession
};