api/post/pid route

This commit is contained in:
Barış Soner Uşaklı
2015-02-24 13:02:58 -05:00
parent 52aa7d27e8
commit c94c1430b7
7 changed files with 49 additions and 6 deletions

View File

@@ -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'),

36
src/controllers/posts.js Normal file
View File

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

View File

@@ -13,9 +13,6 @@ 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);
};

View File

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

View File

@@ -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);
});
},

View File

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

View File

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