mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-29 18:16:17 +01:00
generic getObject
This commit is contained in:
@@ -1,12 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
var meta = require('./../meta'),
|
||||
user = require('./../user'),
|
||||
plugins = require('./../plugins'),
|
||||
widgets = require('../widgets'),
|
||||
|
||||
var async = require('async'),
|
||||
validator = require('validator'),
|
||||
nconf = require('nconf');
|
||||
nconf = require('nconf'),
|
||||
|
||||
meta = require('../meta'),
|
||||
user = require('../user'),
|
||||
posts = require('../posts'),
|
||||
topics = require('../topics'),
|
||||
categories = require('../categories'),
|
||||
privileges = require('../privileges'),
|
||||
plugins = require('../plugins'),
|
||||
helpers = require('./helpers'),
|
||||
widgets = require('../widgets');
|
||||
|
||||
var apiController = {};
|
||||
|
||||
@@ -130,4 +136,41 @@ apiController.renderWidgets = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
apiController.getObject = function(req, res, next) {
|
||||
var methods = {
|
||||
post: {
|
||||
canRead: privileges.posts.can,
|
||||
data: posts.getPostData
|
||||
},
|
||||
topic: {
|
||||
canRead: privileges.topics.can,
|
||||
data: topics.getTopicData
|
||||
},
|
||||
category: {
|
||||
canRead: privileges.categories.can,
|
||||
data: categories.getCategoryData
|
||||
}
|
||||
};
|
||||
|
||||
if (!methods[req.params.type]) {
|
||||
return next();
|
||||
}
|
||||
|
||||
async.parallel({
|
||||
canRead: async.apply(methods[req.params.type].canRead, 'read', req.params.id, req.uid),
|
||||
data: async.apply(methods[req.params.type].data, req.params.id)
|
||||
}, function(err, results) {
|
||||
if (err || !results.data) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.canRead) {
|
||||
return helpers.notAllowed(req, res);
|
||||
}
|
||||
|
||||
res.json(results.data);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
module.exports = apiController;
|
||||
|
||||
@@ -266,21 +266,5 @@ categoriesController.get = function(req, res, callback) {
|
||||
});
|
||||
};
|
||||
|
||||
categoriesController.getCategory = function(req, res, next) {
|
||||
async.parallel({
|
||||
canRead: async.apply(privileges.categories.can, 'read', req.params.cid, req.uid),
|
||||
categoryData: async.apply(categories.getCategoryData, req.params.cid)
|
||||
}, function(err, results) {
|
||||
if (err || !results.categoryData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.canRead) {
|
||||
return helpers.notAllowed(req, res);
|
||||
}
|
||||
|
||||
res.json(results.categoryData);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = categoriesController;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var async = require('async'),
|
||||
|
||||
posts = require('../posts'),
|
||||
privileges = require('../privileges'),
|
||||
helpers = require('./helpers'),
|
||||
postsController = {};
|
||||
|
||||
postsController.getPost = function(req, res, next) {
|
||||
async.parallel({
|
||||
canRead: function(next) {
|
||||
privileges.posts.can('read', req.params.pid, req.uid, next);
|
||||
},
|
||||
postData: function(next) {
|
||||
posts.getPostData(req.params.pid, next);
|
||||
}
|
||||
}, function(err, results) {
|
||||
if (err || !results.postData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.canRead) {
|
||||
return helpers.notAllowed(req, res);
|
||||
}
|
||||
|
||||
res.json(results.postData);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
module.exports = postsController;
|
||||
@@ -313,21 +313,5 @@ topicsController.teaser = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
topicsController.getTopic = function(req, res, next) {
|
||||
async.parallel({
|
||||
canRead: async.apply(privileges.topics.can, 'read', req.params.tid, req.uid),
|
||||
topicData: async.apply(topics.getTopicData, req.params.tid)
|
||||
}, function(err, results) {
|
||||
if (err || !results.topicData) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!results.canRead) {
|
||||
return helpers.notAllowed(req, res);
|
||||
}
|
||||
|
||||
res.json(results.topicData);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = topicsController;
|
||||
|
||||
@@ -15,9 +15,9 @@ module.exports = function(app, middleware, controllers) {
|
||||
router.get('/widgets/render', controllers.api.renderWidgets);
|
||||
|
||||
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
|
||||
router.get('/post/pid/:pid', controllers.posts.getPost);
|
||||
router.get('/topic/tid/:tid', controllers.topics.getTopic);
|
||||
router.get('/category/cid/:cid', controllers.categories.getCategory);
|
||||
router.get('/:type/pid/:id', controllers.api.getObject);
|
||||
router.get('/:type/tid/:id', controllers.api.getObject);
|
||||
router.get('/:type/cid/:id', controllers.api.getObject);
|
||||
|
||||
router.get('/categories/:cid/moderators', getModerators);
|
||||
router.get('/recent/posts/:term?', getRecentPosts);
|
||||
|
||||
Reference in New Issue
Block a user