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 }; diff --git a/server/controllers/forum.controller.js b/server/controllers/forum.controller.js index 81d60237..3d87a9c7 100644 --- a/server/controllers/forum.controller.js +++ b/server/controllers/forum.controller.js @@ -37,13 +37,39 @@ function create(req, res, next) { .catch(err => next(err)); } -function update() { +function update(req, res, next) { + const { + 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' }); + } + 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/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' 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 } }); 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