mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +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