mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 09:06:15 +01:00
closes #3508
This commit is contained in:
@@ -22,14 +22,10 @@ var fs = require('fs'),
|
||||
|
||||
function getUserDataByUserSlug(userslug, callerUID, callback) {
|
||||
user.getUidByUserslug(userslug, function(err, uid) {
|
||||
if (err) {
|
||||
if (err || !uid) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (!uid) {
|
||||
return callback(null, null);
|
||||
}
|
||||
|
||||
async.parallel({
|
||||
userData : function(next) {
|
||||
user.getUserData(uid, next);
|
||||
@@ -50,7 +46,7 @@ function getUserDataByUserSlug(userslug, callerUID, callback) {
|
||||
groups.getUserGroups([uid], next);
|
||||
}
|
||||
}, function(err, results) {
|
||||
if(err || !results.userData) {
|
||||
if (err || !results.userData) {
|
||||
return callback(err || new Error('[[error:invalid-uid]]'));
|
||||
}
|
||||
|
||||
@@ -111,17 +107,13 @@ accountsController.getUserByUID = function(req, res, next) {
|
||||
var uid = req.params.uid ? req.params.uid : 0;
|
||||
|
||||
async.parallel({
|
||||
settings: async.apply(user.getSettings, uid),
|
||||
userData: async.apply(user.getUserData, uid)
|
||||
userData: async.apply(user.getUserData, uid),
|
||||
settings: async.apply(user.getSettings, uid)
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
if (err || !results.userData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.userData) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
results.userData.email = results.settings.showemail ? results.userData.email : undefined;
|
||||
results.userData.fullname = results.settings.showfullname ? results.userData.fullname : undefined;
|
||||
|
||||
@@ -141,14 +133,10 @@ accountsController.getAccount = function(req, res, next) {
|
||||
}
|
||||
|
||||
getUserDataByUserSlug(req.params.userslug, req.uid, function (err, userData) {
|
||||
if (err) {
|
||||
if (err || !userData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!userData) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
if (req.uid !== parseInt(userData.uid, 10)) {
|
||||
user.incrementUserFieldBy(userData.uid, 'profileviews', 1);
|
||||
}
|
||||
@@ -208,7 +196,7 @@ accountsController.getFollowers = function(req, res, next) {
|
||||
getFollow('account/followers', 'followers', req, res, next);
|
||||
};
|
||||
|
||||
function getFollow(tpl, name, req, res, next) {
|
||||
function getFollow(tpl, name, req, res, callback) {
|
||||
var userData;
|
||||
|
||||
async.waterfall([
|
||||
@@ -218,14 +206,14 @@ function getFollow(tpl, name, req, res, next) {
|
||||
function(data, next) {
|
||||
userData = data;
|
||||
if (!userData) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
var method = name === 'following' ? 'getFollowing' : 'getFollowers';
|
||||
user[method](userData.uid, 0, 49, next);
|
||||
}
|
||||
], function(err, users) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
userData.users = users;
|
||||
@@ -254,14 +242,10 @@ accountsController.getTopics = function(req, res, next) {
|
||||
|
||||
accountsController.getGroups = function(req, res, next) {
|
||||
accountsController.getBaseUser(req.params.userslug, req.uid, function(err, userData) {
|
||||
if (err) {
|
||||
if (err || !userData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!userData) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
groups.getUserGroups([userData.uid], function(err, groupsData) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
@@ -284,13 +268,11 @@ function getFromUserSet(tpl, set, method, type, req, res, next) {
|
||||
accountsController.getBaseUser(req.params.userslug, req.uid, next);
|
||||
}
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
if (err || !results.userData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
var userData = results.userData;
|
||||
if (!userData) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
var setName = 'uid:' + userData.uid + ':' + set;
|
||||
|
||||
@@ -385,7 +367,7 @@ accountsController.accountEdit = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
accountsController.accountSettings = function(req, res, next) {
|
||||
accountsController.accountSettings = function(req, res, callback) {
|
||||
var userData;
|
||||
async.waterfall([
|
||||
function(next) {
|
||||
@@ -394,7 +376,7 @@ accountsController.accountSettings = function(req, res, next) {
|
||||
function(_userData, next) {
|
||||
userData = _userData;
|
||||
if (!userData) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
async.parallel({
|
||||
settings: function(next) {
|
||||
@@ -421,7 +403,7 @@ accountsController.accountSettings = function(req, res, next) {
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
userData.dailyDigestFreqOptions = [
|
||||
@@ -433,74 +415,23 @@ accountsController.accountSettings = function(req, res, next) {
|
||||
|
||||
|
||||
userData.bootswatchSkinOptions = [
|
||||
{
|
||||
"name": "Default",
|
||||
"value": "default"
|
||||
},
|
||||
{
|
||||
"name": "Cerulean",
|
||||
"value": "cerulean"
|
||||
},
|
||||
{
|
||||
"name": "Cosmo",
|
||||
"value": "cosmo"
|
||||
},
|
||||
{
|
||||
"name": "Cyborg",
|
||||
"value": "cyborg"
|
||||
},
|
||||
{
|
||||
"name": "Darkly",
|
||||
"value": "darkly"
|
||||
},
|
||||
{
|
||||
"name": "Flatly",
|
||||
"value": "flatly"
|
||||
},
|
||||
{
|
||||
"name": "Journal",
|
||||
"value": "journal"
|
||||
},
|
||||
{
|
||||
"name": "Lumen",
|
||||
"value": "lumen"
|
||||
},
|
||||
{
|
||||
"name": "Paper",
|
||||
"value": "paper"
|
||||
},
|
||||
{
|
||||
"name": "Readable",
|
||||
"value": "readable"
|
||||
},
|
||||
{
|
||||
"name": "Sandstone",
|
||||
"value": "sandstone"
|
||||
},
|
||||
{
|
||||
"name": "Simplex",
|
||||
"value": "simplex"
|
||||
},
|
||||
{
|
||||
"name": "Slate",
|
||||
"value": "slate"
|
||||
},
|
||||
{
|
||||
"name": "Spacelab",
|
||||
"value": "spacelab"
|
||||
},
|
||||
{
|
||||
"name": "Superhero",
|
||||
"value": "superhero"
|
||||
},
|
||||
{
|
||||
"name": "United",
|
||||
"value": "united"
|
||||
},
|
||||
{
|
||||
"name": "Yeti",
|
||||
"value": "yeti"
|
||||
}
|
||||
{ "name": "Default", "value": "default" },
|
||||
{ "name": "Cerulean", "value": "cerulean" },
|
||||
{ "name": "Cosmo", "value": "cosmo" },
|
||||
{ "name": "Cyborg", "value": "cyborg" },
|
||||
{ "name": "Darkly", "value": "darkly" },
|
||||
{ "name": "Flatly", "value": "flatly" },
|
||||
{ "name": "Journal", "value": "journal" },
|
||||
{ "name": "Lumen", "value": "lumen" },
|
||||
{ "name": "Paper", "value": "paper" },
|
||||
{ "name": "Readable", "value": "readable" },
|
||||
{ "name": "Sandstone", "value": "sandstone" },
|
||||
{ "name": "Simplex", "value": "simplex" },
|
||||
{ "name": "Slate", "value": "slate" },
|
||||
{ "name": "Spacelab", "value": "spacelab" },
|
||||
{ "name": "Superhero", "value": "superhero" },
|
||||
{ "name": "United", "value": "united" },
|
||||
{ "name": "Yeti", "value": "yeti" }
|
||||
];
|
||||
|
||||
userData.bootswatchSkinOptions.forEach(function(skin) {
|
||||
@@ -574,9 +505,9 @@ accountsController.getNotifications = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
accountsController.getChats = function(req, res, next) {
|
||||
if (parseInt(meta.config.disableChat) === 1) {
|
||||
return helpers.notFound(req, res);
|
||||
accountsController.getChats = function(req, res, callback) {
|
||||
if (parseInt(meta.config.disableChat, 10) === 1) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
// In case a userNAME is passed in instead of a slug, the route should not 404
|
||||
@@ -590,7 +521,7 @@ accountsController.getChats = function(req, res, next) {
|
||||
recentChats: async.apply(messaging.getRecentChats, req.user.uid, 0, 19)
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
//Remove entries if they were already present as a followed contact
|
||||
@@ -618,7 +549,7 @@ accountsController.getChats = function(req, res, next) {
|
||||
async.apply(user.getUidByUserslug, req.params.userslug),
|
||||
function(toUid, next) {
|
||||
if (!toUid || parseInt(toUid, 10) === parseInt(req.user.uid, 10)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
async.parallel({
|
||||
@@ -634,7 +565,7 @@ accountsController.getChats = function(req, res, next) {
|
||||
}
|
||||
], function(err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
res.render('chats', {
|
||||
|
||||
@@ -50,7 +50,7 @@ groupsController.list = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
groupsController.get = function(req, res, next) {
|
||||
groupsController.get = function(req, res, callback) {
|
||||
var groupName = req.params.name;
|
||||
async.waterfall([
|
||||
function(next){
|
||||
@@ -58,13 +58,13 @@ groupsController.get = function(req, res, next) {
|
||||
},
|
||||
function(exists, next) {
|
||||
if (!exists) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
groups.get(groupName, {uid: req.uid}, next);
|
||||
}
|
||||
], function(err, group) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
res.render('admin/manage/group', {group: group});
|
||||
});
|
||||
|
||||
@@ -76,13 +76,13 @@ categoriesController.list = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
categoriesController.get = function(req, res, next) {
|
||||
categoriesController.get = function(req, res, callback) {
|
||||
var cid = req.params.category_id,
|
||||
page = parseInt(req.query.page, 10) || 1,
|
||||
userPrivileges;
|
||||
|
||||
if ((req.params.topic_index && !utils.isNumber(req.params.topic_index)) || !utils.isNumber(cid)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
@@ -106,7 +106,7 @@ categoriesController.get = function(req, res, next) {
|
||||
userPrivileges = results.privileges;
|
||||
|
||||
if (!results.exists || (results.categoryData && parseInt(results.categoryData.disabled, 10) === 1)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
if (!results.privileges.read) {
|
||||
@@ -127,7 +127,7 @@ categoriesController.get = function(req, res, next) {
|
||||
}
|
||||
|
||||
if (settings.usePagination && (page < 1 || page > pageCount)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
if (!settings.usePagination) {
|
||||
@@ -245,7 +245,7 @@ categoriesController.get = function(req, res, next) {
|
||||
}
|
||||
], function (err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
data.currentPage = page;
|
||||
@@ -259,7 +259,7 @@ categoriesController.get = function(req, res, next) {
|
||||
|
||||
plugins.fireHook('filter:category.build', {req: req, res: res, templateData: data}, function(err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
res.render('category', data.templateData);
|
||||
});
|
||||
|
||||
@@ -42,39 +42,34 @@ groupsController.getGroupsFromSet = function(uid, sort, start, stop, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
groupsController.details = function(req, res, next) {
|
||||
groupsController.details = function(req, res, callback) {
|
||||
async.waterfall([
|
||||
async.apply(groups.exists, res.locals.groupName),
|
||||
function(exists, next) {
|
||||
if (!exists) {
|
||||
return next(undefined, null);
|
||||
return callback();
|
||||
}
|
||||
|
||||
// Ensure the group isn't hidden either
|
||||
groups.isHidden(res.locals.groupName, next);
|
||||
},
|
||||
function(hidden, next) {
|
||||
if (hidden === null) { return next(undefined, false); } // Group didn't exist, not ok
|
||||
|
||||
if (!hidden) {
|
||||
next(null, true);
|
||||
} else {
|
||||
// If not, only members are granted access
|
||||
async.parallel([
|
||||
async.apply(groups.isMember, req.uid, res.locals.groupName),
|
||||
async.apply(groups.isInvited, req.uid, res.locals.groupName)
|
||||
], function(err, checks) {
|
||||
next(err, checks[0] || checks[1]);
|
||||
});
|
||||
return next();
|
||||
}
|
||||
}
|
||||
], function(err, ok) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!ok) {
|
||||
return helpers.redirect(res, '/groups');
|
||||
async.parallel({
|
||||
isMember: async.apply(groups.isMember, req.uid, res.locals.groupName),
|
||||
isInvited: async.apply(groups.isInvited, req.uid, res.locals.groupName)
|
||||
}, function(err, checks) {
|
||||
if (err || checks.isMember || checks.isInvited) {
|
||||
return next(err);
|
||||
}
|
||||
callback();
|
||||
});
|
||||
}
|
||||
], function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
async.parallel({
|
||||
@@ -90,12 +85,8 @@ groupsController.details = function(req, res, next) {
|
||||
},
|
||||
isAdmin: async.apply(user.isAdministrator, req.uid)
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.group) {
|
||||
return helpers.notFound(req, res);
|
||||
if (err || !results.group) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
results.title = '[[pages:group, ' + results.group.displayName + ']]';
|
||||
|
||||
@@ -11,28 +11,6 @@ var nconf = require('nconf'),
|
||||
|
||||
var helpers = {};
|
||||
|
||||
helpers.notFound = function(req, res, error) {
|
||||
if (plugins.hasListeners('action:meta.override404')) {
|
||||
plugins.fireHook('action:meta.override404', {
|
||||
req: req,
|
||||
res: res,
|
||||
error: error
|
||||
});
|
||||
} else if (res.locals.isAPI) {
|
||||
res.status(404).json({
|
||||
path: req.path.replace(/^\/api/, ''),
|
||||
error: error,
|
||||
title: '[[global:404.title]]'
|
||||
});
|
||||
} else {
|
||||
res.status(404).render('404', {
|
||||
path: req.path,
|
||||
error: error,
|
||||
title: '[[global:404.title]]'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
helpers.notAllowed = function(req, res, error) {
|
||||
if (req.uid) {
|
||||
if (res.locals.isAPI) {
|
||||
|
||||
@@ -101,7 +101,7 @@ Controllers.register = function(req, res, next) {
|
||||
var registrationType = meta.config.registrationType || 'normal';
|
||||
|
||||
if (registrationType === 'disabled') {
|
||||
return helpers.notFound(req, res);
|
||||
return next();
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
@@ -164,7 +164,7 @@ Controllers.confirmEmail = function(req, res, next) {
|
||||
|
||||
Controllers.sitemap = function(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableSitemap'], 10) === 1) {
|
||||
return helpers.notFound(req, res);
|
||||
return next();
|
||||
}
|
||||
|
||||
var sitemap = require('../sitemap.js');
|
||||
@@ -204,7 +204,7 @@ Controllers.outgoing = function(req, res, next) {
|
||||
|
||||
Controllers.termsOfUse = function(req, res, next) {
|
||||
if (!meta.config.termsOfUse) {
|
||||
return helpers.notFound(req, res);
|
||||
return next();
|
||||
}
|
||||
res.render('tos', {termsOfUse: meta.config.termsOfUse});
|
||||
};
|
||||
|
||||
@@ -16,12 +16,10 @@ postsController.getPost = function(req, res, next) {
|
||||
posts.getPostData(req.params.pid, next);
|
||||
}
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
if (err || !results.postData) {
|
||||
return next(err);
|
||||
}
|
||||
if (!results.postData) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
if (!results.canRead) {
|
||||
return helpers.notAllowed(req, res);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ var searchController = {},
|
||||
|
||||
searchController.search = function(req, res, next) {
|
||||
if (!plugins.hasListeners('filter:search.query')) {
|
||||
return helpers.notFound(req, res);
|
||||
return next();
|
||||
}
|
||||
|
||||
var breadcrumbs = helpers.buildBreadcrumbs([{text: '[[global:search]]'}]);
|
||||
|
||||
@@ -16,13 +16,13 @@ var topicsController = {},
|
||||
pagination = require('../pagination'),
|
||||
utils = require('../../public/src/utils');
|
||||
|
||||
topicsController.get = function(req, res, next) {
|
||||
topicsController.get = function(req, res, callback) {
|
||||
var tid = req.params.topic_id,
|
||||
sort = req.query.sort,
|
||||
userPrivileges;
|
||||
|
||||
if ((req.params.post_index && !utils.isNumber(req.params.post_index)) || !utils.isNumber(tid)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
async.waterfall([
|
||||
@@ -60,7 +60,7 @@ topicsController.get = function(req, res, next) {
|
||||
}
|
||||
|
||||
if (settings.usePagination && (page < 1 || page > pageCount)) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
var set = 'tid:' + tid + ':posts',
|
||||
@@ -109,7 +109,7 @@ topicsController.get = function(req, res, next) {
|
||||
|
||||
topics.getTopicWithPosts(tid, set, req.uid, start, stop, reverse, function (err, topicData) {
|
||||
if (err && err.message === '[[error:no-topic]]' && !topicData) {
|
||||
return helpers.notFound(req, res);
|
||||
return callback();
|
||||
}
|
||||
|
||||
if (err && !topicData) {
|
||||
@@ -247,7 +247,7 @@ topicsController.get = function(req, res, next) {
|
||||
}
|
||||
], function (err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
data.privileges = userPrivileges;
|
||||
@@ -264,7 +264,7 @@ topicsController.get = function(req, res, next) {
|
||||
|
||||
plugins.fireHook('filter:topic.build', {req: req, res: res, templateData: data}, function(err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
return callback(err);
|
||||
}
|
||||
res.render('topic', data.templateData);
|
||||
});
|
||||
|
||||
@@ -296,11 +296,10 @@ var async = require('async'),
|
||||
Groups.isHidden = function(groupName, callback) {
|
||||
Groups.getGroupFields(groupName, ['hidden'], function(err, values) {
|
||||
if (err) {
|
||||
winston.warn('[groups.isHidden] Could not determine group hidden state (group: ' + groupName + ')');
|
||||
return callback(null, true); // Default true
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
callback(null, parseInt(values.hidden, 10));
|
||||
callback(null, parseInt(values.hidden, 10) === 1);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -134,10 +134,6 @@ middleware.checkAccountPermissions = function(req, res, next) {
|
||||
user.getUidByUserslug(req.params.userslug, next);
|
||||
},
|
||||
function (uid, next) {
|
||||
if (!uid) {
|
||||
return controllers.helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
if (parseInt(uid, 10) === req.uid) {
|
||||
return next(null, true);
|
||||
}
|
||||
|
||||
@@ -39,6 +39,10 @@ function hasPrivileges(method, id, req, res, next) {
|
||||
}
|
||||
|
||||
function generateForTopic(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
|
||||
var tid = req.params.topic_id;
|
||||
|
||||
privileges.topics.get(tid, req.uid, function(err, userPrivileges) {
|
||||
@@ -52,7 +56,7 @@ function generateForTopic(req, res, next) {
|
||||
}
|
||||
|
||||
if (topicData.deleted && !userPrivileges.view_deleted) {
|
||||
return helpers.notFound(req, res);
|
||||
return next();
|
||||
}
|
||||
|
||||
var description = topicData.posts.length ? topicData.posts[0].content : '';
|
||||
@@ -94,6 +98,10 @@ function generateForTopic(req, res, next) {
|
||||
}
|
||||
|
||||
function generateForUserTopics(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
|
||||
var userslug = req.params.userslug;
|
||||
|
||||
async.waterfall([
|
||||
@@ -119,6 +127,9 @@ function generateForUserTopics(req, res, next) {
|
||||
}
|
||||
|
||||
function generateForCategory(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
var cid = req.params.category_id;
|
||||
|
||||
categories.getCategoryById({
|
||||
@@ -149,6 +160,9 @@ function generateForCategory(req, res, next) {
|
||||
}
|
||||
|
||||
function generateForRecent(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
generateForTopics({
|
||||
uid: req.uid,
|
||||
title: 'Recently Active Topics',
|
||||
@@ -159,6 +173,9 @@ function generateForRecent(req, res, next) {
|
||||
}
|
||||
|
||||
function generateForPopular(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
var terms = {
|
||||
daily: 'day',
|
||||
weekly: 'week',
|
||||
@@ -187,14 +204,6 @@ function generateForPopular(req, res, next) {
|
||||
});
|
||||
}
|
||||
|
||||
function disabledRSS(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return helpers.notFound(req, res);
|
||||
}
|
||||
|
||||
next();
|
||||
}
|
||||
|
||||
function generateForTopics(options, set, req, res, next) {
|
||||
topics.getTopicsFromSet(set, req.uid, 0, 19, function (err, data) {
|
||||
if (err) {
|
||||
@@ -262,6 +271,10 @@ function generateTopicsFeed(feedOptions, feedTopics, callback) {
|
||||
}
|
||||
|
||||
function generateForRecentPosts(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
|
||||
posts.getRecentPosts(req.uid, 0, 19, 'month', function(err, posts) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
@@ -279,6 +292,9 @@ function generateForRecentPosts(req, res, next) {
|
||||
}
|
||||
|
||||
function generateForCategoryRecentPosts(req, res, next) {
|
||||
if (parseInt(meta.config['feeds:disableRSS'], 10) === 1) {
|
||||
return next();
|
||||
}
|
||||
var cid = req.params.category_id;
|
||||
|
||||
async.parallel({
|
||||
@@ -337,12 +353,12 @@ function sendFeed(feed, res) {
|
||||
}
|
||||
|
||||
module.exports = function(app, middleware, controllers){
|
||||
app.get('/topic/:topic_id.rss', hasTopicPrivileges, disabledRSS, generateForTopic);
|
||||
app.get('/category/:category_id.rss', hasCategoryPrivileges, disabledRSS, generateForCategory);
|
||||
app.get('/recent.rss', disabledRSS, generateForRecent);
|
||||
app.get('/popular.rss', disabledRSS, generateForPopular);
|
||||
app.get('/popular/:term.rss', disabledRSS, generateForPopular);
|
||||
app.get('/recentposts.rss', disabledRSS, generateForRecentPosts);
|
||||
app.get('/category/:category_id/recentposts.rss', hasCategoryPrivileges, disabledRSS, generateForCategoryRecentPosts);
|
||||
app.get('/user/:userslug/topics.rss', disabledRSS, generateForUserTopics);
|
||||
app.get('/topic/:topic_id.rss', hasTopicPrivileges, generateForTopic);
|
||||
app.get('/category/:category_id.rss', hasCategoryPrivileges, generateForCategory);
|
||||
app.get('/recent.rss', generateForRecent);
|
||||
app.get('/popular.rss', generateForPopular);
|
||||
app.get('/popular/:term.rss', generateForPopular);
|
||||
app.get('/recentposts.rss', generateForRecentPosts);
|
||||
app.get('/category/:category_id/recentposts.rss', hasCategoryPrivileges, generateForCategoryRecentPosts);
|
||||
app.get('/user/:userslug/topics.rss', generateForUserTopics);
|
||||
};
|
||||
|
||||
@@ -44,11 +44,11 @@ module.exports = function(app, middleware, controllers) {
|
||||
if (matches.length) {
|
||||
res.sendFile(matches[0]);
|
||||
} else {
|
||||
helpers.notFound(req, res);
|
||||
next();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
helpers.notFound(req, res);
|
||||
next();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user