@@ -3,7 +3,8 @@ const bcrypt = require('bcryptjs');
3
3
const csrf = require ( 'csurf' ) ;
4
4
const passport = require ( 'passport' ) ;
5
5
const LocalStrategy = require ( 'passport-local' ) . Strategy ;
6
- const OTPAuth = require ( 'otpauth' )
6
+ const OTPAuth = require ( 'otpauth' ) ;
7
+ const session = require ( 'express-session' ) ;
7
8
8
9
/**
9
10
* Constructor for Authentication class
@@ -55,34 +56,46 @@ function initialize(app, options) {
55
56
56
57
const cookieSessionSecret = options . cookieSessionSecret || require ( 'crypto' ) . randomBytes ( 64 ) . toString ( 'hex' ) ;
57
58
const cookieSessionMaxAge = options . cookieSessionMaxAge ;
59
+
58
60
app . use ( require ( 'connect-flash' ) ( ) ) ;
59
61
app . use ( require ( 'body-parser' ) . urlencoded ( { extended : true } ) ) ;
60
- app . use ( require ( 'cookie-session' ) ( {
61
- key : 'parse_dash' ,
62
- secret : cookieSessionSecret ,
63
- maxAge : cookieSessionMaxAge
62
+
63
+ app . use ( session ( {
64
+ name : 'parse_dash' ,
65
+ secret : cookieSessionSecret ,
66
+ resave : false ,
67
+ saveUninitialized : false ,
68
+ cookie : {
69
+ maxAge : cookieSessionMaxAge ,
70
+ httpOnly : true ,
71
+ secure : process . env . NODE_ENV === 'production' ,
72
+ sameSite : 'lax'
73
+ }
64
74
} ) ) ;
75
+
65
76
app . use ( passport . initialize ( ) ) ;
66
77
app . use ( passport . session ( ) ) ;
67
78
68
79
app . post ( '/login' ,
69
80
csrf ( ) ,
70
- ( req , res , next ) => {
81
+ ( req , res , next ) => {
71
82
let redirect = 'apps' ;
72
83
if ( req . body . redirect ) {
73
- redirect = req . body . redirect . charAt ( 0 ) === '/' ? req . body . redirect . substring ( 1 ) : req . body . redirect
84
+ redirect = req . body . redirect . charAt ( 0 ) === '/' ? req . body . redirect . substring ( 1 ) : req . body . redirect ;
74
85
}
75
86
return passport . authenticate ( 'local' , {
76
87
successRedirect : `${ self . mountPath } ${ redirect } ` ,
77
88
failureRedirect : `${ self . mountPath } login${ req . body . redirect ? `?redirect=${ req . body . redirect } ` : '' } ` ,
78
- failureFlash : true
79
- } ) ( req , res , next )
89
+ failureFlash : true
90
+ } ) ( req , res , next ) ;
80
91
} ,
81
92
) ;
82
93
83
- app . get ( '/logout' , function ( req , res ) {
84
- req . logout ( ) ;
85
- res . redirect ( `${ self . mountPath } login` ) ;
94
+ app . get ( '/logout' , function ( req , res , next ) {
95
+ req . logout ( function ( err ) {
96
+ if ( err ) { return next ( err ) ; }
97
+ res . redirect ( `${ self . mountPath } login` ) ;
98
+ } ) ;
86
99
} ) ;
87
100
}
88
101
0 commit comments