From c139dfa843b87bdb246a2804946e8e5502a4719e Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sun, 20 Sep 2015 16:06:17 -0400 Subject: [PATCH] closes #3631 --- src/controllers/categories.js | 15 +++++++++++++++ src/controllers/topics.js | 17 +++++++++++++++++ src/routes/api.js | 5 ++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/controllers/categories.js b/src/controllers/categories.js index 32553088a1..41c6feecf0 100644 --- a/src/controllers/categories.js +++ b/src/controllers/categories.js @@ -266,6 +266,21 @@ 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; diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 75f8a92b9d..bcd3dfb5fc 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -313,4 +313,21 @@ 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; diff --git a/src/routes/api.js b/src/routes/api.js index dec27ea2d4..338996f035 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -15,7 +15,10 @@ 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', controllers.posts.getPost); + 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('/categories/:cid/moderators', getModerators); router.get('/recent/posts/:term?', getRecentPosts); router.get('/unread/total', middleware.authenticate, controllers.unread.unreadTotal);