-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsession.js
More file actions
69 lines (61 loc) · 1.8 KB
/
Copy pathsession.js
File metadata and controls
69 lines (61 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
const ConfirmedError = require("shared/error");
const Logger = require("shared/logger");
// Constants
const DOMAIN = process.env.DOMAIN;
const NODE_ENV = process.env.NODE_ENV;
const ADMIN_SESSION_SECRET = process.env.ADMIN_SESSION_SECRET;
const session = require("express-session");
const flash = require("connect-flash");
const RedisClient = require("shared/redis").Client;
const RedisStore = require("connect-redis")(session);
const sessionOptions = {
store: new RedisStore({
client: RedisClient,
prefix: "a:" // "admin session"
}),
secret: ADMIN_SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true
},
unset: "destroy",
name: "confirmedadminid",
sameSite: true
};
if (NODE_ENV === "production") {
sessionOptions.cookie.secure = true;
sessionOptions.cookie.domain = DOMAIN;
}
const flashMiddleware = (request, response, next) => {
// flash for the current page without redirecting
request.flashRender = (type, message, render, code = 200) => {
request.flash(type, message);
response.locals.flash = request.flash();
response.status(code);
response.render(render);
};
// flash for redirects - should retrieve from response.locals
request.flashRedirect = (type, message, redirect) => {
request.flash(type, message);
response.redirect(redirect);
};
response.locals.flash = request.flash();
// clear it
if (request.session && request.session.flash) {
delete request.session.flash;
}
next();
};
const setIpEmail = (request, response, next) => {
response.locals.ip = request.ip;
response.locals.email = (request.session && request.session.userEmail) ? request.session.userEmail : "";
next();
};
module.exports = [
session(sessionOptions),
flash(),
flashMiddleware,
setIpEmail
];