From 188527c6b55a2d64d5f76c5d3e094da45c69b0c9 Mon Sep 17 00:00:00 2001 From: BakedSnake Date: Wed, 17 Mar 2021 12:58:53 +0100 Subject: Public version --- routes/cmmnts.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 routes/cmmnts.js (limited to 'routes/cmmnts.js') diff --git a/routes/cmmnts.js b/routes/cmmnts.js new file mode 100644 index 0000000..7f3ef23 --- /dev/null +++ b/routes/cmmnts.js @@ -0,0 +1,78 @@ +const express = require('express'), + router = express.Router({mergeParams: true}), + Post = require('../models/blogPost'), + Cmmnt = require('../models/cmmnt'), + middleware = require('../middleware'); + +// Comment routes +//--------------- + +// New +router.get('/new', middleware.isLoggedIn, (req, res) => { + Post.findById(req.params.pid, (err, foundPost) => { + if(err) { + console.log(err); + } else { + res.render('comments/new', { post: foundPost }); + } + }); +}); + +// Create +router.post ('/', middleware.isLoggedIn, (req, res) => { + req.body.cmmnt.text = req.sanitize(req.body.cmmnt.text); + Post.findById(req.params.pid, (err, foundPost) => { + if(err) { + console.log(err); + res.redirect('back'); + } else { + Cmmnt.create(req.body.cmmnt, (err, comment) => { + if(err) { + console.log(err); + } else { + comment.author.id = req.user._id; + comment.author.username = req.user.username; + comment.save(); + foundPost.comments.push(comment); + foundPost.save(); + return res.redirect(`/blog/${req.params.blog}/${req.params.pid}`); + } + }); + } + }); +}); + +//Edit +router.get('/:cid/edit', middleware.checkCmmntOwnership, (req, res) => { + Cmmnt.findById(req.params.cid, (err, foundCmmnt) => { + if(err) { + res.redirect('back'); + } else { + res.render('comments/edit', {account: req.params.blog, post_id: req.params.pid, comment: foundCmmnt}); + } + }); +}); + +//Update +router.put('/:cid', middleware.checkCmmntOwnership, (req, res) => { + Cmmnt.findByIdAndUpdate(req.params.cid, req.body.cmmnt, (err, updatedCmmnt) => { + if(err) { + res.redirect('back'); + } else { + res.redirect(`/blog/${req.params.blog}/${req.params.pid}`); + } + }); +}); + +//Destroy +router.delete('/:cid', middleware.checkCmmntOwnership, (req, res) => { + Cmmnt.findByIdAndRemove(req.params.cid, (err) => { + if(err) { + res.redirect('back'); + } else { + res.redirect(`/blog/${req.params.blog}/${req.params.pid}`); + } + }); +}); + +module.exports = router; \ No newline at end of file -- cgit v1.2.3