@@ -24,6 +24,11 @@ const { validateMany } = require('./common');
24
24
25
25
const AuthMiddleware = { } ;
26
26
27
+ const destroySessionIfExists = ( req , res ) => new Promise ( ( resolve ) => {
28
+ if ( req . session ) destroySession ( req . session , res , ( ) => resolve ( ) ) ;
29
+ else resolve ( ) ;
30
+ } ) ;
31
+
27
32
const validSessionDetails = async ( req , res , next ) => {
28
33
if ( ! req . session . user . isAPIKey ) {
29
34
const { id : sessionId , ipAddress, user : { userAgent } } = req . session ;
@@ -34,12 +39,9 @@ const validSessionDetails = async (req, res, next) => {
34
39
35
40
if ( ! ipMatch || ! userAgentMatch ) {
36
41
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 ) ;
43
45
} catch ( err ) {
44
46
respond ( req , res , err ) ;
45
47
}
@@ -60,6 +62,7 @@ const validSession = async (req, res, next) => {
60
62
if ( await checkValidSession ( req ) ) {
61
63
await next ( ) ;
62
64
} else {
65
+ await destroySessionIfExists ( req , res ) ;
63
66
respond ( req , res , templates . notLoggedIn ) ;
64
67
}
65
68
} ;
@@ -68,6 +71,7 @@ AuthMiddleware.isLoggedIn = async (req, res, next) => {
68
71
if ( await checkValidSession ( req , true ) ) {
69
72
await next ( ) ;
70
73
} else {
74
+ await destroySessionIfExists ( req , res ) ;
71
75
respond ( req , res , templates . notLoggedIn ) ;
72
76
}
73
77
} ;
0 commit comments