This commit is contained in:
barisusakli
2014-07-30 15:14:04 -04:00
parent 7e82d3d9a5
commit cfc67d4e90
8 changed files with 24 additions and 33 deletions

View File

@@ -70,11 +70,13 @@ categoriesController.get = function(req, res, next) {
async.waterfall([
function(next) {
categories.getCategoryField(cid, 'disabled', function(err, disabled) {
next(disabled === '1' ? new Error('category-disabled') : undefined);
});
categories.getCategoryField(cid, 'disabled', next);
},
function(next) {
function(disabled, next) {
if (parseInt(disabled, 10) === 1) {
return next(new Error('category-disabled'));
}
privileges.categories.get(cid, uid, function(err, categoryPrivileges) {
if (err) {
return next(err);
@@ -163,11 +165,7 @@ categoriesController.get = function(req, res, next) {
}
], function (err, data) {
if (err) {
if (err.message === '[[error:no-privileges]]') {
return res.locals.isAPI ? res.json(403, err.message) : res.redirect('403');
} else {
return res.locals.isAPI ? res.json(404, 'not-found') : res.redirect('404');
}
return res.locals.isAPI ? res.json(404, 'not-found') : res.redirect(nconf.get('relative_path') + '/404');
}
if (data.link) {

View File

@@ -30,7 +30,7 @@ groupsController.details = function(req, res) {
if (!err) {
res.render('groups/details', results);
} else {
res.redirect('404');
res.redirect(nconf.get('relative_path') + '/404')
}
});
};

View File

@@ -188,7 +188,7 @@ Controllers.confirmEmail = function(req, res, next) {
Controllers.sitemap = function(req, res, next) {
if (meta.config['feeds:disableSitemap'] === '1') {
return res.redirect('404');
return res.redirect(nconf.get('relative_path') + '/404')
}
var sitemap = require('../sitemap.js');

View File

@@ -24,7 +24,7 @@ topicsController.get = function(req, res, next) {
privileges.topics.get(tid, uid, next);
},
function (privileges, next) {
if (!privileges.read) {
if (!privileges.read || privileges.disabled) {
return next(new Error('[[error:no-privileges]]'));
}
@@ -164,11 +164,7 @@ topicsController.get = function(req, res, next) {
}
], function (err, data) {
if (err) {
if (err.message === '[[error:no-privileges]]') {
return res.locals.isAPI ? res.json(403, err.message) : res.redirect('403');
} else {
return res.locals.isAPI ? res.json(404, 'not-found') : res.redirect('404');
}
return res.locals.isAPI ? res.json(404, 'not-found') : res.redirect(nconf.get('relative_path') + '/404');
}
data.privileges = userPrivileges;

View File

@@ -161,11 +161,7 @@ middleware.checkAccountPermissions = function(req, res, next) {
}
if (!uid) {
if (res.locals.isAPI) {
return res.json(404, 'not-found');
} else {
return res.redirect('404');
}
return res.locals.isAPI ? res.json(404, 'not-found') : res.redirect(nconf.get('relative_path') + '/404');
}
if (parseInt(uid, 10) === callerUID) {
@@ -181,11 +177,7 @@ middleware.checkAccountPermissions = function(req, res, next) {
return next();
}
if (res.locals.isAPI) {
return res.json(403, 'not-allowed');
} else {
return res.redirect('403');
}
res.locals.isAPI ? res.json(403, 'not-allowed') : res.redirect(nconf.get('relative_path') + '/403');
});
});
};

View File

@@ -39,11 +39,15 @@ module.exports = function(privileges) {
},
isModerator: function(next) {
user.isModerator(uid, cid, next);
},
disabled: function(next) {
categories.getCategoryField(cid, 'disabled', next);
}
}, function(err, results) {
if(err) {
return callback(err);
}
var disabled = parseInt(results.disabled, 10) === 1;
var isAdminOrMod = results.isAdministrator || results.isModerator;
var editable = isAdminOrMod || results.manage_topic;
var deletable = isAdminOrMod || results.isOwner;
@@ -54,7 +58,8 @@ module.exports = function(privileges) {
view_thread_tools: editable || deletable,
editable: editable,
deletable: deletable,
view_deleted: isAdminOrMod || results.manage_topic || results.isOwner
view_deleted: isAdminOrMod || results.manage_topic || results.isOwner,
disabled: disabled
});
});
});

View File

@@ -31,7 +31,7 @@ function hasPrivileges(method, id, req, res, next) {
}
if (!canRead) {
return res.redirect('403');
return res.redirect(nconf.get('relative_path') + '/403')
}
return next();
@@ -53,7 +53,7 @@ function generateForTopic(req, res, next) {
}
if (topicData.deleted && !userPrivileges.view_deleted) {
return res.redirect('404');
return res.redirect(nconf.get('relative_path') + '/404')
}
var description = topicData.posts.length ? topicData.posts[0].content : '';
@@ -133,7 +133,7 @@ function generateForPopular(req, res, next) {
function disabledRSS(req, res, next) {
if (meta.config['feeds:disableRSS'] === '1') {
return res.redirect('404');
return res.redirect(nconf.get('relative_path') + '/404')
}
next();

View File

@@ -216,7 +216,7 @@ function handleErrors(err, req, res, next) {
req.flash('errorMessage', err.message);
res.redirect('500');
res.redirect(nconf.get('relative_path') + '/500')
}
function catch404(req, res, next) {