api/post/pid route

v1.18.x
Barış Soner Uşaklı 10 years ago
parent 52aa7d27e8
commit c94c1430b7

@ -16,6 +16,7 @@ var async = require('async'),
helpers = require('./helpers');
var Controllers = {
posts: require('./posts'),
topics: require('./topics'),
categories: require('./categories'),
tags: require('./tags'),

@ -0,0 +1,36 @@
"use strict";
var async = require('async'),
posts = require('../posts'),
privileges = require('../privileges'),
helpers = require('./helpers'),
postsController = {};
postsController.getPost = function(req, res, next) {
var uid = req.user ? parseInt(req.user.uid) : 0;
async.parallel({
canRead: function(next) {
privileges.posts.can('read', req.params.pid, uid, next);
},
postData: function(next) {
posts.getPostData(req.params.pid, next);
}
}, function(err, results) {
if (err) {
return next(err);
}
if (!results.postData) {
return helpers.notFound(req, res);
}
if (!results.canRead) {
return helpers.notAllowed(req, res);
}
res.json(results.postData);
});
};
module.exports = postsController;

@ -13,10 +13,7 @@ module.exports = function(Posts) {
},
function(tid, next) {
topics.getTopicField(tid, 'cid', next);
},
function(cid, next) {
next(!cid ? new Error('[[error:invalid-cid]]') : null, cid);
}
}
], callback);
};

@ -46,6 +46,9 @@ module.exports = function(privileges) {
};
privileges.categories.can = function(privilege, cid, uid, callback) {
if (!cid) {
return callback(null, false);
}
categories.getCategoryField(cid, 'disabled', function(err, disabled) {
if (err) {
return callback(err);

@ -153,9 +153,10 @@ module.exports = function(privileges) {
helpers.some([
function(next) {
posts.getCidByPid(pid, function(err, cid) {
if (err) {
return next(err);
if (err || !cid) {
return next(err, false);
}
user.isModerator(uid, cid, next);
});
},

@ -16,6 +16,7 @@ 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('/get_templates_listing', templatesController.getTemplatesListing);
router.get('/categories/:cid/moderators', getModerators);
router.get('/recent/posts/:term?', getRecentPosts);

@ -41,6 +41,10 @@ module.exports = function(Topics) {
posts.getCidByPid(mainPid, callback);
}
}, function(err, results) {
if (err) {
return callback(err);
}
Topics.create({uid: results.postData.uid, title: title, cid: results.cid}, function(err, tid) {
if (err) {
return callback(err);

Loading…
Cancel
Save