mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-10 16:05:49 +01:00
Fix for issue #5334. SessionStore now uses the correct value
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
var session = require('express-session');
|
var session = require('express-session');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
var semver = require('semver');
|
var semver = require('semver');
|
||||||
|
var meta = require('../meta');
|
||||||
var db;
|
var db;
|
||||||
|
|
||||||
_.mixin(require('underscore.deep'));
|
_.mixin(require('underscore.deep'));
|
||||||
@@ -47,7 +48,7 @@
|
|||||||
module.helpers.mongo = require('./mongo/helpers');
|
module.helpers.mongo = require('./mongo/helpers');
|
||||||
|
|
||||||
module.init = function (callback) {
|
module.init = function (callback) {
|
||||||
callback = callback || function () {};
|
callback = callback || function () { };
|
||||||
var mongoClient;
|
var mongoClient;
|
||||||
try {
|
try {
|
||||||
mongoClient = require('mongodb').MongoClient;
|
mongoClient = require('mongodb').MongoClient;
|
||||||
@@ -111,23 +112,28 @@
|
|||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
createSessionStore();
|
callback();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
winston.warn('You have no mongo password setup!');
|
winston.warn('You have no mongo password setup!');
|
||||||
createSessionStore();
|
callback();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
function createSessionStore() {
|
module.initSessionStore = function (callback) {
|
||||||
|
var meta = require('../meta');
|
||||||
var sessionStore;
|
var sessionStore;
|
||||||
if (nconf.get('redis')) {
|
if (nconf.get('redis')) {
|
||||||
sessionStore = require('connect-redis')(session);
|
sessionStore = require('connect-redis')(session);
|
||||||
var rdb = require('./redis');
|
var rdb = require('./redis');
|
||||||
rdb.client = rdb.connect();
|
rdb.client = rdb.connect();
|
||||||
|
|
||||||
|
var ttlDays = 1000 * 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 14);
|
||||||
|
|
||||||
module.sessionStore = new sessionStore({
|
module.sessionStore = new sessionStore({
|
||||||
client: rdb.client,
|
client: rdb.client,
|
||||||
ttl: 60 * 60 * 24 * 14
|
ttl: ttlDays
|
||||||
});
|
});
|
||||||
} else if (nconf.get('mongo')) {
|
} else if (nconf.get('mongo')) {
|
||||||
sessionStore = require('connect-mongo')(session);
|
sessionStore = require('connect-mongo')(session);
|
||||||
@@ -135,9 +141,8 @@
|
|||||||
db: db
|
db: db
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
callback();
|
callback();
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.createIndices = function (callback) {
|
module.createIndices = function (callback) {
|
||||||
@@ -152,9 +157,9 @@
|
|||||||
|
|
||||||
winston.info('[database] Checking database indices.');
|
winston.info('[database] Checking database indices.');
|
||||||
async.series([
|
async.series([
|
||||||
async.apply(createIndex, 'objects', {_key: 1, score: -1}, {background: true}),
|
async.apply(createIndex, 'objects', { _key: 1, score: -1 }, { background: true }),
|
||||||
async.apply(createIndex, 'objects', {_key: 1, value: -1}, {background: true, unique: true, sparse: true}),
|
async.apply(createIndex, 'objects', { _key: 1, value: -1 }, { background: true, unique: true, sparse: true }),
|
||||||
async.apply(createIndex, 'objects', {expireAt: 1}, {expireAfterSeconds: 0, background: true})
|
async.apply(createIndex, 'objects', { expireAt: 1 }, { expireAfterSeconds: 0, background: true })
|
||||||
], function (err) {
|
], function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
winston.error('Error creating index ' + err.message);
|
winston.error('Error creating index ' + err.message);
|
||||||
@@ -181,10 +186,10 @@
|
|||||||
}
|
}
|
||||||
async.parallel({
|
async.parallel({
|
||||||
serverStatus: function (next) {
|
serverStatus: function (next) {
|
||||||
db.command({'serverStatus': 1}, next);
|
db.command({ 'serverStatus': 1 }, next);
|
||||||
},
|
},
|
||||||
stats: function (next) {
|
stats: function (next) {
|
||||||
db.command({'dbStats': 1}, next);
|
db.command({ 'dbStats': 1 }, next);
|
||||||
},
|
},
|
||||||
listCollections: function (next) {
|
listCollections: function (next) {
|
||||||
db.listCollections().toArray(function (err, items) {
|
db.listCollections().toArray(function (err, items) {
|
||||||
@@ -239,4 +244,4 @@
|
|||||||
db.close();
|
db.close();
|
||||||
};
|
};
|
||||||
|
|
||||||
}(exports));
|
} (exports));
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
module.init = function (callback) {
|
module.init = function (callback) {
|
||||||
try {
|
try {
|
||||||
redis = require('redis');
|
redis = require('redis');
|
||||||
connectRedis = require('connect-redis')(session);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message);
|
winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message);
|
||||||
process.exit();
|
process.exit();
|
||||||
@@ -48,11 +47,6 @@
|
|||||||
|
|
||||||
module.client = redisClient;
|
module.client = redisClient;
|
||||||
|
|
||||||
module.sessionStore = new connectRedis({
|
|
||||||
client: redisClient,
|
|
||||||
ttl: 60 * 60 * 24 * 14
|
|
||||||
});
|
|
||||||
|
|
||||||
require('./redis/main')(redisClient, module);
|
require('./redis/main')(redisClient, module);
|
||||||
require('./redis/hash')(redisClient, module);
|
require('./redis/hash')(redisClient, module);
|
||||||
require('./redis/sets')(redisClient, module);
|
require('./redis/sets')(redisClient, module);
|
||||||
@@ -64,6 +58,22 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.initSessionStore = function (callback) {
|
||||||
|
var meta = require('../meta');
|
||||||
|
connectRedis = require('connect-redis')(session);
|
||||||
|
|
||||||
|
var ttlDays = 1000 * 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 14);
|
||||||
|
|
||||||
|
module.sessionStore = new connectRedis({
|
||||||
|
client: redisClient,
|
||||||
|
ttl: ttlDays
|
||||||
|
});
|
||||||
|
|
||||||
|
if (typeof callback === 'function') {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
module.connect = function (options) {
|
module.connect = function (options) {
|
||||||
var redis_socket_or_host = nconf.get('redis:host');
|
var redis_socket_or_host = nconf.get('redis:host');
|
||||||
var cxn;
|
var cxn;
|
||||||
@@ -97,7 +107,7 @@
|
|||||||
var dbIdx = parseInt(nconf.get('redis:database'), 10);
|
var dbIdx = parseInt(nconf.get('redis:database'), 10);
|
||||||
if (dbIdx) {
|
if (dbIdx) {
|
||||||
cxn.select(dbIdx, function (error) {
|
cxn.select(dbIdx, function (error) {
|
||||||
if(error) {
|
if (error) {
|
||||||
winston.error("NodeBB could not connect to your Redis database. Redis returned the following error: " + error.message);
|
winston.error("NodeBB could not connect to your Redis database. Redis returned the following error: " + error.message);
|
||||||
process.exit();
|
process.exit();
|
||||||
}
|
}
|
||||||
@@ -156,5 +166,5 @@
|
|||||||
|
|
||||||
module.helpers = module.helpers || {};
|
module.helpers = module.helpers || {};
|
||||||
module.helpers.redis = require('./redis/helpers');
|
module.helpers.redis = require('./redis/helpers');
|
||||||
}(exports));
|
} (exports));
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ start.start = function () {
|
|||||||
next(err);
|
next(err);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
function(next) {
|
||||||
|
db.initSessionStore(next);
|
||||||
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
var webserver = require('./webserver');
|
var webserver = require('./webserver');
|
||||||
require('./socket.io').init(webserver.server);
|
require('./socket.io').init(webserver.server);
|
||||||
|
|||||||
Reference in New Issue
Block a user