Files
node-template-express/src/utils/session.ts
2020-11-15 22:03:09 +01:00

29 lines
752 B
TypeScript

import {Store} from 'express-session';
import {Redis, Config} from '.';
import * as redisStore from "connect-redis";
import * as session from 'express-session';
import {RequestHandler} from 'express';
Config.requireEnv('SESSION_SECRET', true);
let sessionStore: Store|undefined = undefined;
function getRouter(options?: Partial<session.SessionOptions>): RequestHandler {
if (Redis.client && sessionStore !== undefined) {
const RedisStore = redisStore(session);
sessionStore = new RedisStore({client: Redis.client});
}
return session({
store: sessionStore,
secret: Config.SESSION_SECRET || 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: {secure: false},
...options,
});
}
export const Session = {
getRouter,
};