diff --git a/src/database/mongo.js b/src/database/mongo.js index ae2ff7785656..be13a185e8d6 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -116,9 +116,7 @@ var meta = require('../meta'); var sessionStore; - var ttlDays = 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 0); - var ttlSeconds = (parseInt(meta.config.loginSeconds, 10) || 0); - var ttl = ttlSeconds || ttlDays || 1209600; // Default to 14 days in seconds + var ttl = meta.getSessionTTLSeconds(); if (nconf.get('redis')) { sessionStore = require('connect-redis')(session); diff --git a/src/database/redis.js b/src/database/redis.js index c8c420a3ee47..7fb61565e3bc 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -60,13 +60,9 @@ var meta = require('../meta'); var sessionStore = require('connect-redis')(session); - var ttlDays = 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 0); - var ttlSeconds = (parseInt(meta.config.loginSeconds, 10) || 0); - var ttl = ttlSeconds || ttlDays || 1209600; // Default to 14 days - module.sessionStore = new sessionStore({ client: module.client, - ttl: ttl, + ttl: meta.getSessionTTLSeconds(), }); if (typeof callback === 'function') { diff --git a/src/meta.js b/src/meta.js index c67369a8d985..1fb0170297d9 100644 --- a/src/meta.js +++ b/src/meta.js @@ -51,6 +51,13 @@ var utils = require('./utils'); restart(); }; + Meta.getSessionTTLSeconds = function () { + var ttlDays = 60 * 60 * 24 * (parseInt(Meta.config.loginDays, 10) || 0); + var ttlSeconds = (parseInt(Meta.config.loginSeconds, 10) || 0); + var ttl = ttlSeconds || ttlDays || 1209600; // Default to 14 days + return ttl; + }; + if (nconf.get('isPrimary') === 'true') { pubsub.on('meta:restart', function (data) { if (data.hostname !== os.hostname()) { diff --git a/src/webserver.js b/src/webserver.js index 09da4a4d08ce..94684d8e245c 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -166,9 +166,7 @@ function setupFavicon(app) { } function setupCookie() { - var ttlDays = 1000 * 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 0); - var ttlSeconds = 1000 * (parseInt(meta.config.loginSeconds, 10) || 0); - var ttl = ttlSeconds || ttlDays || 1209600000; // Default to 14 days + var ttl = meta.getSessionTTLSeconds() * 1000; var cookie = { maxAge: ttl, diff --git a/test/meta.js b/test/meta.js index 4544570b422b..9c2f6d89b3ea 100644 --- a/test/meta.js +++ b/test/meta.js @@ -192,6 +192,26 @@ describe('meta', function () { }); + describe('session TTL', function () { + it('should return 14 days in seconds', function (done) { + assert(meta.getSessionTTLSeconds(), 1209600); + done(); + }); + + it('should return 7 days in seconds', function (done) { + meta.config.loginDays = 7; + assert(meta.getSessionTTLSeconds(), 604800); + done(); + }); + + it('should return 2 days in seconds', function (done) { + meta.config.loginSeconds = 172800; + assert(meta.getSessionTTLSeconds(), 172800); + done(); + }); + }); + + after(function (done) { db.emptydb(done); });