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";
|
"use strict";
|
||||||
|
|
||||||
var meta = require('./../meta'),
|
var async = require('async'),
|
||||||
user = require('./../user'),
|
|
||||||
plugins = require('./../plugins'),
|
|
||||||
widgets = require('../widgets'),
|
|
||||||
|
|
||||||
validator = require('validator'),
|
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 = {};
|
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;
|
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;
|
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;
|
module.exports = topicsController;
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ module.exports = function(app, middleware, controllers) {
|
|||||||
router.get('/widgets/render', controllers.api.renderWidgets);
|
router.get('/widgets/render', controllers.api.renderWidgets);
|
||||||
|
|
||||||
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
|
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.accounts.getUserByUID);
|
||||||
router.get('/post/pid/:pid', controllers.posts.getPost);
|
router.get('/:type/pid/:id', controllers.api.getObject);
|
||||||
router.get('/topic/tid/:tid', controllers.topics.getTopic);
|
router.get('/:type/tid/:id', controllers.api.getObject);
|
||||||
router.get('/category/cid/:cid', controllers.categories.getCategory);
|
router.get('/:type/cid/:id', controllers.api.getObject);
|
||||||
|
|
||||||
router.get('/categories/:cid/moderators', getModerators);
|
router.get('/categories/:cid/moderators', getModerators);
|
||||||
router.get('/recent/posts/:term?', getRecentPosts);
|
router.get('/recent/posts/:term?', getRecentPosts);
|
||||||
|
|||||||
Reference in New Issue
Block a user