From 312a18e276083e7c2435558a4cd0b44b289a82f7 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Thu, 6 Jul 2017 17:26:04 +0800 Subject: [PATCH] feat(forums): add forum topics server routs,policy --- .../controllers/forums.server.controller.js | 33 +++++++++++++++++++ .../server/policies/forums.server.policy.js | 6 ++-- .../server/routes/forums.server.routes.js | 10 ++++-- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index 6f319ad5..9ce319e9 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -32,3 +32,36 @@ exports.list = function (req, res) { res.json(forums); }); }; + +/** + * read forum + * @param req + * @param res + */ +exports.read = function (req, res) { + res.json(req.forum); +}; + +/** + * listTopics + * @param req + * @param res + */ +exports.listTopics = function (req, res) { + Topic.find({ + forum: req.params.forumId + }) + .sort('-isTop -updatedAt -createdAt') + .populate('user', 'username displayName profileImageURL uploaded downloaded') + .populate('lastUser', 'username displayName profileImageURL uploaded downloaded') + .populate('_scoreList.user', 'username displayName profileImageURL uploaded downloaded') + .populate('_replies.user', 'username displayName profileImageURL uploaded downloaded') + .exec(function (err, topics) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } + res.json(topics); + }); +}; diff --git a/modules/forums/server/policies/forums.server.policy.js b/modules/forums/server/policies/forums.server.policy.js index ebbc45cd..d4eddca6 100644 --- a/modules/forums/server/policies/forums.server.policy.js +++ b/modules/forums/server/policies/forums.server.policy.js @@ -18,14 +18,16 @@ exports.invokeRolesPolicies = function () { roles: ['admin', 'oper', 'user'], allows: [ {resources: '/api/forums', permissions: '*'}, - {resources: '/api/forums/:forumId', permissions: '*'} + {resources: '/api/forums/:forumId', permissions: '*'}, + {resources: '/api/topics/:forumId', permissions: '*'} ] }, { roles: ['guest'], allows: [ {resources: '/api/forums', permissions: ['get']}, - {resources: '/api/forums/:forumId', permissions: ['get']} + {resources: '/api/forums/:forumId', permissions: ['get']}, + {resources: '/api/topics/:forumId', permissions: ['get']} ] } ] diff --git a/modules/forums/server/routes/forums.server.routes.js b/modules/forums/server/routes/forums.server.routes.js index fec13004..4b8ac903 100644 --- a/modules/forums/server/routes/forums.server.routes.js +++ b/modules/forums/server/routes/forums.server.routes.js @@ -11,8 +11,12 @@ module.exports = function (app) { app.route('/api/forums').all(forumsPolicy.isAllowed) .get(forums.list); - // Single article routes - //app.route('/api/forums/:forumId').all(forumsPolicy.isAllowed) - // .get(forums.listTopic); + //Single article routes + app.route('/api/forums/:forumId').all(forumsPolicy.isAllowed) + .get(forums.read); + + //Single article routes + app.route('/api/topics/:forumId').all(forumsPolicy.isAllowed) + .get(forums.listTopics); };