mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-16 21:40:23 +01:00
Compare commits
15 Commits
normalize-
...
stable
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2656bf0b6 | ||
|
|
176a2153d5 | ||
|
|
fe1c38605a | ||
|
|
37fe854f46 | ||
|
|
b603341af6 | ||
|
|
989262fb10 | ||
|
|
eec524e9f4 | ||
|
|
73429e8771 | ||
|
|
47adafb4d7 | ||
|
|
af0d7a5ce6 | ||
|
|
cb32d68e3a | ||
|
|
03ba90c648 | ||
|
|
dbb6a0be1c | ||
|
|
4686ae9923 | ||
|
|
616bc68ebd |
2751
npm-shrinkwrap.json
generated
Normal file
2751
npm-shrinkwrap.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPLv3 or later",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "0.6.1-dev",
|
||||
"version": "0.6.1",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -59,7 +59,7 @@
|
||||
"socket.io-redis": "^0.1.3",
|
||||
"socketio-wildcard": "~0.1.1",
|
||||
"string": "^3.0.0",
|
||||
"templates.js": "^0.1.15",
|
||||
"templates.js": "^0.1.12",
|
||||
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
|
||||
"underscore": "~1.7.0",
|
||||
"validator": "~3.28.0",
|
||||
|
||||
@@ -154,8 +154,8 @@ define('admin/manage/groups', [
|
||||
socket.emit('admin.user.search', {query: searchText}, function(err, results) {
|
||||
if (!err && results && results.users.length > 0) {
|
||||
var numResults = results.users.length, x;
|
||||
if (numResults > 4) {
|
||||
numResults = 4;
|
||||
if (numResults > 20) {
|
||||
numResults = 20;
|
||||
}
|
||||
|
||||
groupDetailsSearchResults.empty();
|
||||
|
||||
@@ -7,10 +7,11 @@ define('forum/account/header', function() {
|
||||
};
|
||||
|
||||
function displayAccountMenus() {
|
||||
$('.account-sub-links .plugin-link').each(function() {
|
||||
var $this = $(this);
|
||||
$this.toggleClass('hide', $this.hasClass('private'));
|
||||
});
|
||||
if (!app.user.uid || app.user.uid !== parseInt(ajaxify.variables.get('theirid'), 10)) {
|
||||
$('.account-sub-links .plugin-link.private').each(function() {
|
||||
$(this).addClass('hide');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function selectActivePill() {
|
||||
|
||||
@@ -74,8 +74,10 @@
|
||||
db = _db;
|
||||
|
||||
module.client = db;
|
||||
|
||||
|
||||
if (!nconf.get('redis')) {
|
||||
// TEMP: to fix connect-mongo, see https://github.com/kcbanner/connect-mongo/issues/161
|
||||
db.openCalled = true
|
||||
module.sessionStore = new sessionStore({
|
||||
db: db
|
||||
});
|
||||
|
||||
@@ -230,7 +230,7 @@ module.exports = function(db, module) {
|
||||
data[field] = value;
|
||||
|
||||
db.collection('objects').findAndModify({_key: key}, {}, {$inc: data}, {new: true, upsert: true}, function(err, result) {
|
||||
callback(err, result ? result[field] : null);
|
||||
callback(err, result && result.value ? result.value[field] : null);
|
||||
});
|
||||
};
|
||||
};
|
||||
@@ -118,7 +118,7 @@ module.exports = function(db, module) {
|
||||
return callback();
|
||||
}
|
||||
db.collection('objects').findAndModify({_key: key}, {}, {$inc: {value: 1}}, {new: true, upsert: true}, function(err, result) {
|
||||
callback(err, result ? result.value : null);
|
||||
callback(err, result && result.value ? result.value.value : null);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -138,7 +138,7 @@ module.exports = function(db, module) {
|
||||
};
|
||||
|
||||
module.pexpire = function(key, ms, callback) {
|
||||
module.expireAt(key, Date.now() + parseInt(ms, 10), callback);
|
||||
module.pexpireAt(key, Date.now() + parseInt(ms, 10), callback);
|
||||
};
|
||||
|
||||
module.pexpireAt = function(key, timestamp, callback) {
|
||||
|
||||
@@ -499,7 +499,7 @@ module.exports = function(db, module) {
|
||||
data.score = parseInt(increment, 10);
|
||||
|
||||
db.collection('objects').findAndModify({_key: key, value: value}, {}, {$inc: data}, {new: true, upsert: true}, function(err, result) {
|
||||
callback(err, result ? result.score : null);
|
||||
callback(err, result && result.value ? result.value.score : null);
|
||||
});
|
||||
};
|
||||
};
|
||||
@@ -435,8 +435,8 @@ install.setup = function (callback) {
|
||||
setupConfig,
|
||||
setupDefaultConfigs,
|
||||
enableDefaultTheme,
|
||||
createAdministrator,
|
||||
createCategories,
|
||||
createAdministrator,
|
||||
createWelcomePost,
|
||||
enableDefaultPlugins,
|
||||
setCopyrightWidget,
|
||||
@@ -445,7 +445,7 @@ install.setup = function (callback) {
|
||||
}
|
||||
], function (err) {
|
||||
if (err) {
|
||||
winston.warn('NodeBB Setup Aborted. ' + err.message);
|
||||
winston.warn('NodeBB Setup Aborted.\n ' + err.stack);
|
||||
process.exit();
|
||||
} else {
|
||||
callback();
|
||||
|
||||
@@ -70,6 +70,10 @@ SocketMeta.rooms.enter = function(socket, data, callback) {
|
||||
socket.currentRoom = data.enter;
|
||||
if (data.enter.indexOf('topic') !== -1) {
|
||||
data.uid = socket.uid;
|
||||
data.picture = validator.escape(data.picture);
|
||||
data.username = validator.escape(data.username);
|
||||
data.userslug = validator.escape(data.userslug);
|
||||
|
||||
websockets.in(data.enter).emit('event:user_enter', data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
var async = require('async'),
|
||||
nconf = require('nconf'),
|
||||
db = require('../database'),
|
||||
user = require('../user'),
|
||||
groups = require('../groups'),
|
||||
topics = require('../topics'),
|
||||
@@ -13,6 +14,7 @@ var async = require('async'),
|
||||
websockets = require('./index'),
|
||||
meta = require('../meta'),
|
||||
events = require('../events'),
|
||||
emailer = require('../emailer'),
|
||||
SocketUser = {};
|
||||
|
||||
SocketUser.exists = function(socket, data, callback) {
|
||||
@@ -87,18 +89,38 @@ SocketUser.reset.valid = function(socket, code, callback) {
|
||||
};
|
||||
|
||||
SocketUser.reset.commit = function(socket, data, callback) {
|
||||
if(data && data.code && data.password) {
|
||||
user.reset.commit(data.code, data.password, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
events.log({
|
||||
type: 'password-reset',
|
||||
uid: socket.uid,
|
||||
ip: socket.ip
|
||||
if (!data || !data.code || !data.password) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
async.parallel({
|
||||
uid: async.apply(db.getObjectField, 'reset:uid', data.code),
|
||||
reset: async.apply(user.reset.commit, data.code, data.password)
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var uid = results.uid,
|
||||
now = new Date(),
|
||||
parsedDate = now.getFullYear() + '/' + (now.getMonth()+1) + '/' + now.getDate();
|
||||
|
||||
user.getUserField(uid, 'username', function(err, username) {
|
||||
emailer.send('reset_notify', uid, {
|
||||
username: username,
|
||||
date: parsedDate,
|
||||
site_title: meta.config.title || 'NodeBB',
|
||||
subject: '[[email:reset.notify.subject]]'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
events.log({
|
||||
type: 'password-reset',
|
||||
uid: uid,
|
||||
ip: socket.ip
|
||||
});
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
SocketUser.checkStatus = function(socket, uid, callback) {
|
||||
@@ -137,6 +159,7 @@ SocketUser.changePassword = function(socket, data, callback) {
|
||||
targetUid: data.uid,
|
||||
ip: socket.ip
|
||||
});
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -250,11 +250,24 @@ Upgrade.upgrade = function(callback) {
|
||||
}, next);
|
||||
}
|
||||
|
||||
Groups.list({showSystemGroups: true}, function(err, groups) {
|
||||
async.waterfall([
|
||||
async.apply(db.getSetMembers, 'groups'),
|
||||
function(groups, next) {
|
||||
async.filter(groups, function(group, next) {
|
||||
db.getObjectField('group:' + group, 'hidden', function(err, hidden) {
|
||||
next(!parseInt(hidden, 10));
|
||||
}, next);
|
||||
}, function(groups) {
|
||||
next(null, groups);
|
||||
});
|
||||
}
|
||||
], function(err, groups) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
groups.push('administrators', 'registered-users');
|
||||
|
||||
async.eachLimit(cids, 50, function(cid, next) {
|
||||
upgradePrivileges(cid, groups, next);
|
||||
}, next);
|
||||
@@ -445,7 +458,7 @@ Upgrade.upgrade = function(callback) {
|
||||
if (setting.dailyDigestFreq !== 'off') {
|
||||
db.sortedSetAdd('digest:' + setting.dailyDigestFreq + ':uids', now, setting.uid, next);
|
||||
} else {
|
||||
next(false);
|
||||
setImmediate(next);
|
||||
}
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<input type="number" class="form-control" value="8" data-field="minimumPostLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Minimum Post Length</label>
|
||||
<label>Maximum Post Length</label>
|
||||
<input type="number" class="form-control" value="32767" data-field="maximumPostLength">
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
@@ -152,4 +152,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- IMPORT admin/settings/footer.tpl -->
|
||||
<!-- IMPORT admin/settings/footer.tpl -->
|
||||
|
||||
Reference in New Issue
Block a user