From 5b22856821ccc9f6e69b0997968f12aae1df4aee Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 4 Apr 2018 16:02:39 -0700 Subject: [PATCH 1/4] Editing Forum threads implementation on API --- server/controllers/forum.controller.js | 28 +++++++++++++++++++++++--- server/models/forumThread.model.js | 1 + 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/controllers/forum.controller.js b/server/controllers/forum.controller.js index 81d60237..e9a9ca8c 100644 --- a/server/controllers/forum.controller.js +++ b/server/controllers/forum.controller.js @@ -37,13 +37,35 @@ function create(req, res, next) { .catch(err => next(err)); } -function update() { +function update(req, res, next) { + const { + forumThread, user, content, title + } = req; + if (forumThread && forumThread.author && forumThread.author._id && user) { + if (forumThread.author._id.toString() !== user._id.toString()) { + return res.status(401).json({ Error: 'Please login' }); + } + forumThread.content = content; + forumThread.title = title; + forumThread.dateLastEdited = Date(); + return forumThread + .save() + .then((editedThread) => { + // Sucess: + res.json(editedThread); + }) + .catch((e) => { + next(e); + }); + } + return res.status(500).json({}); } function remove(req, res, next) { const { forumThread, user } = req; - if (forumThread && user) { - if (forumThread.author.toString() !== user._id.toString()) { + // TODO: if admin should be able to delete too + if (forumThread && forumThread.author && forumThread.author._id && user) { + if (forumThread.author._id.toString() !== user._id.toString()) { return res.status(401).json({ Error: 'Please login' }); } forumThread.deleted = true; diff --git a/server/models/forumThread.model.js b/server/models/forumThread.model.js index edb09c44..5f819523 100644 --- a/server/models/forumThread.model.js +++ b/server/models/forumThread.model.js @@ -25,6 +25,7 @@ const ForumThreadSchema = new mongoose.Schema({ }, commentsCount: { type: Number, default: 0 }, dateLastAcitiy: { type: Date, default: Date.now }, + dateLastEdited: { type: Date }, dateCreated: { type: Date, default: Date.now } }); From c8880a525fda3a440c4696194b8bb18af37a0c30 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 5 Apr 2018 10:41:35 -0700 Subject: [PATCH 2/4] Fix edit / update function --- server/controllers/forum.controller.js | 6 +++++- server/routes/forum.route.js | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/controllers/forum.controller.js b/server/controllers/forum.controller.js index e9a9ca8c..3d87a9c7 100644 --- a/server/controllers/forum.controller.js +++ b/server/controllers/forum.controller.js @@ -39,8 +39,12 @@ function create(req, res, next) { function update(req, res, next) { const { - forumThread, user, content, title + forumThread, user } = req; + const { + content, title + } = req.body; + if (forumThread && forumThread.author && forumThread.author._id && user) { if (forumThread.author._id.toString() !== user._id.toString()) { return res.status(401).json({ Error: 'Please login' }); diff --git a/server/routes/forum.route.js b/server/routes/forum.route.js index c7422c0e..42d18067 100644 --- a/server/routes/forum.route.js +++ b/server/routes/forum.route.js @@ -26,7 +26,10 @@ router expressJwt({ secret: config.jwtSecret, credentialsRequired: false }), forumCtrl.detail ) - .put(expressJwt({ secret: config.jwtSecret, credentialsRequired: true }), forumCtrl.update) + .put( + expressJwt({ secret: config.jwtSecret, credentialsRequired: true }), + forumCtrl.update + ) .delete( expressJwt({ secret: config.jwtSecret, credentialsRequired: true }), forumCtrl.remove From bac0b007a6dcdcb8452442f59a07cb983356424f Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 6 Apr 2018 12:43:29 -0700 Subject: [PATCH 3/4] Update comment --- server/controllers/comment.controller.js | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/server/controllers/comment.controller.js b/server/controllers/comment.controller.js index ffd679e7..f12e76f3 100644 --- a/server/controllers/comment.controller.js +++ b/server/controllers/comment.controller.js @@ -69,6 +69,28 @@ function remove(req, res, next) { return res.status(500).json({}); } +function update(req, res, next) { + const { comment, user } = req; + const { content } = req.body; + if (comment && user) { + if (comment.author._id.toString() !== user._id.toString()) { + return res.status(401).json({ Error: 'Please login' }); + } + comment.content = content; + comment.dateLastEdited = Date(); + return comment + .save() + .then((editedComment) => { + // Sucess: + res.json(editedComment); + }) + .catch((e) => { + next(e); + }); + } + return res.status(500).json({}); +} + /** * @swagger * tags: @@ -192,5 +214,6 @@ export default { load, list, create, - remove + remove, + update }; From f0afe784b082c61e19b438832524a016bbaa72cf Mon Sep 17 00:00:00 2001 From: jason Date: Fri, 6 Apr 2018 12:44:08 -0700 Subject: [PATCH 4/4] Date last edited in comment model --- server/models/comment.model.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/models/comment.model.js b/server/models/comment.model.js index 72420f9d..97163e32 100644 --- a/server/models/comment.model.js +++ b/server/models/comment.model.js @@ -59,9 +59,7 @@ const CommentSchema = new Schema({ dateDeleted: { type: Date }, - lastEdited: { - type: Date - }, + dateLastEdited: { type: Date }, rootEntity: { type: Schema.Types.ObjectId // The entity that owns this comment // , ref: 'Post' | 'AMA'