Skip to content

Commit a845554

Browse files
committed
ISSUE #5373 clean up session if the user isn't considered to be logged in
1 parent 3233de4 commit a845554

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

backend/src/v5/middleware/auth.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ const { validateMany } = require('./common');
2424

2525
const AuthMiddleware = {};
2626

27+
const destroySessionIfExists = (req, res) => new Promise((resolve) => {
28+
if (req.session) destroySession(req.session, res, () => resolve());
29+
else resolve();
30+
});
31+
2732
const validSessionDetails = async (req, res, next) => {
2833
if (!req.session.user.isAPIKey) {
2934
const { id: sessionId, ipAddress, user: { userAgent } } = req.session;
@@ -34,12 +39,9 @@ const validSessionDetails = async (req, res, next) => {
3439

3540
if (!ipMatch || !userAgentMatch) {
3641
try {
37-
const callback = () => {
38-
logger.logInfo(`Session ${sessionId} destroyed due to IP or user agent mismatch`);
39-
respond(req, res, templates.notLoggedIn);
40-
};
41-
42-
destroySession(req.session, res, callback);
42+
await destroySessionIfExists(req, res);
43+
logger.logInfo(`Session ${sessionId} destroyed due to IP or user agent mismatch`);
44+
respond(req, res, templates.notLoggedIn);
4345
} catch (err) {
4446
respond(req, res, err);
4547
}
@@ -60,6 +62,7 @@ const validSession = async (req, res, next) => {
6062
if (await checkValidSession(req)) {
6163
await next();
6264
} else {
65+
await destroySessionIfExists(req, res);
6366
respond(req, res, templates.notLoggedIn);
6467
}
6568
};
@@ -68,6 +71,7 @@ AuthMiddleware.isLoggedIn = async (req, res, next) => {
6871
if (await checkValidSession(req, true)) {
6972
await next();
7073
} else {
74+
await destroySessionIfExists(req, res);
7175
respond(req, res, templates.notLoggedIn);
7276
}
7377
};

0 commit comments

Comments
 (0)