diff options
author | BakedSnake <gilferrandm@gmail.com> | 2021-03-17 12:58:53 +0100 |
---|---|---|
committer | BakedSnake <gilferrandm@gmail.com> | 2021-03-17 12:58:53 +0100 |
commit | 188527c6b55a2d64d5f76c5d3e094da45c69b0c9 (patch) | |
tree | 8c6c41a2ffe04af81483ec36f72d328c3c76780a /routes/blog.js |
Diffstat (limited to 'routes/blog.js')
-rw-r--r-- | routes/blog.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/routes/blog.js b/routes/blog.js new file mode 100644 index 0000000..0bf31f3 --- /dev/null +++ b/routes/blog.js @@ -0,0 +1,103 @@ +const express = require('express'), + router = express.Router(), + Post = require('../models/blogPost'), + User = require('../models/user'), + Account = require('../models/account'), + middleware = require('../middleware'); + +//---------------------------------------- +// ROUTES +//--------------------------------------- +// +// Index +router.get('/:blog', (req, res) => { + User.findOne({ username: req.params.blog }, (err, foundUser) => { + if(err) { + console.log(err); + } else { + let usr ={ + id: foundUser._id, + username: foundUser.username, + }; + Post.find({ author: usr }, (err, posts) => { + if(err) { + console.log(err); + res.render('index'); + } else { + res.render('blog/blog', { posts: posts, account: foundUser }); + } + }) + } + }) +}); + +// New +router.get('/:blog/new', (req, res) => { + res.render('blog/new'); +}); + +//Show +router.get('/:blog/:pid', (req, res) => { + Post.findById(req.params.pid).populate('comments').exec((err, foundPost) => { + if(err) { + console.log(err); + } else { + res.render('blog/show', { post: foundPost, account: req.params.blog }); + } + }); +}); + +//Create +router.post('/', middleware.isLoggedIn, (req, res) => { + let author = { + id: req.user._id, + username: req.user.username + } + req.body.post.author = author; + req.body.post.body = req.sanitize(req.body.post.body); + Post.create(req.body.post, (err, newPost) => { + if(err) { + res.render('blog/new'); + } else { + res.redirect(`/blog/${req.user.username}`); + } + }); +}); + +//Edit +router.get('/:blog/:pid/edit', middleware.checkPostOwnership, (req, res) => { + Post.findById(req.params.pid, (err, foundPost) => { + if(err) { + console.log(err); + res.redirect('back'); + } else { + res.render('blog/edit', {post: foundPost}); + } + }); +}); + +//Update +router.put('/:blog/:pid', middleware.checkPostOwnership, (req, res) => { + req.body.post.body = req.sanitize(req.body.post.body); + Post.findByIdAndUpdate(req.params.pid, req.body.post, (err, updatedPost) => { + if(err) { + console.log(err); + res.redirect('back'); + } else { + res.redirect(`/blog/${req.user.username}/${req.params.pid}`) + } + }); +}); + +//Destroy +router.delete('/:blog/:pid', middleware.checkPostOwnership, (req, res) => { + Post.findByIdAndRemove(req.params.pid, (err) => { + if(err) { + res.redirect(`/blog/${req.params.blog}`); + } else { + res.redirect(`/blog/${req.params.blog}`); + } + }); +}) + +module.exports = router;
\ No newline at end of file |