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