Skip to content

Commit c3ee2ee

Browse files
committed
GDPR8
* Use very short session before successful auth. Session "bleeding" briefly mentioned at OpenUserJS#1411 . This is "expanded" after successful auth. * Output `originalMaxAge` for sync check in *express-session* via MongoDB * Don't easily expose improper/expired callbacks. Part of OpenUserJS#37 * Remove some currently unneeded `return` statements already captured by block braces Related to OpenUserJS#604 OpenUserJS#1201 OpenUserJS#1202 and OpenUserJS#1393
1 parent c320015 commit c3ee2ee

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

app.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ app.use(session({
318318
saveUninitialized: false,
319319
unset: 'destroy',
320320
cookie: {
321-
maxAge: 6 * 60 * 60 * 1000 // hours in ms
321+
maxAge: 5 * 60 * 1000 // minutes in ms NOTE: Expanded after successful auth
322322
},
323323
rolling: true,
324324
secret: sessionSecret,

controllers/admin.js

+1
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ exports.adminSessionActiveView = function (aReq, aRes, aNext) {
397397
if (data && data.user) {
398398
options.session.push({
399399
_id: aElement._id,
400+
originalMaxAge: data.cookie.originalMaxAge,
400401
expires: data.cookie.expires,
401402
name: data.user.name
402403
});

controllers/auth.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var strategyInstances = require('../libs/passportLoader').strategyInstances;
2727
var verifyPassport = require('../libs/passportVerify').verify;
2828
var cleanFilename = require('../libs/helpers').cleanFilename;
2929
var addSession = require('../libs/modifySessions').add;
30+
var expandSession = require('../libs/modifySessions').expand;
3031

3132
//--- Configuration inclusions
3233
var allStrategies = require('./strategies.json');
@@ -187,9 +188,9 @@ exports.callback = function (aReq, aRes, aNext) {
187188
var strategyInstance = null;
188189
var doneUri = aReq.session.user ? '/user/preferences' : '/';
189190

190-
// The callback was called improperly
191+
// The callback was called improperly or sesssion expired
191192
if (!strategy || !username) {
192-
aNext();
193+
aRes.redirect(doneUri + (doneUri === '/' ? 'login' : ''));
193194
return;
194195
}
195196

@@ -295,16 +296,16 @@ exports.callback = function (aReq, aRes, aNext) {
295296
if (newstrategy && newstrategy !== strategy) {
296297
// Allow a user to link to another account
297298
aRes.redirect('/auth/' + newstrategy); // NOTE: Watchpoint... careful with encoding
298-
return;
299299
} else {
300300
// Delete the username that was temporarily stored
301301
delete aReq.session.username;
302302
delete aReq.session.newstrategy;
303303
doneUri = aReq.session.redirectTo;
304304
delete aReq.session.redirectTo;
305305

306-
aRes.redirect(doneUri);
307-
return;
306+
expandSession(aReq, aUser, function () {
307+
aRes.redirect(doneUri);
308+
});
308309
}
309310
});
310311
});

libs/modifySessions.js

+20-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ var isPro = require('../libs/debug').isPro;
55
var isDev = require('../libs/debug').isDev;
66
var isDbg = require('../libs/debug').isDbg;
77

8+
//--- Library inclusions
9+
var moment = require('moment');
10+
811
//
912
// This library allows for the modifications of user sessions
1013
var async = require('async');
@@ -62,6 +65,22 @@ exports.add = function (aReq, aUser, aCallback) {
6265
}
6366
};
6467

68+
// Expand a single session
69+
exports.expand = function (aReq, aUser, aCallback) {
70+
var expiry = null;
71+
72+
if (!aUser) {
73+
aCallback('No User');
74+
return;
75+
}
76+
77+
// NOTE: Expanded minus initial. Keep initial in sync with app.js
78+
expiry = moment(aReq.session.cookie.expires).add(6, 'h').subtract(5, 'm');
79+
80+
aReq.session.cookie.expires = expiry.toDate();
81+
aReq.session.save(aCallback);
82+
};
83+
6584
// Extend a single session
6685
exports.extend = function (aReq, aUser, aCallback) {
6786
if (!aUser) {
@@ -75,7 +94,7 @@ exports.extend = function (aReq, aUser, aCallback) {
7594
}
7695

7796
// NOTE: Currently allow on any session with
78-
// no additional User restrictions yet
97+
// no additional User restrictions yet...
7998

8099
aReq.session.cookie.expires = false;
81100
aReq.session.save(aCallback);

0 commit comments

Comments
 (0)