generic getObject

This commit is contained in:
barisusakli
2015-09-21 12:59:41 -04:00
parent 1dd706d0b2
commit f3b6a5fbb9
5 changed files with 52 additions and 74 deletions

View File

@@ -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;