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 |
Diffstat (limited to 'routes')
-rw-r--r-- | routes/account.js | 0 | ||||
-rw-r--r-- | routes/blog.js | 103 | ||||
-rw-r--r-- | routes/cmmnts.js | 78 | ||||
-rw-r--r-- | routes/index.js | 66 | ||||
-rw-r--r-- | routes/search.js | 39 |
5 files changed, 286 insertions, 0 deletions
diff --git a/routes/account.js b/routes/account.js new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/routes/account.js 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 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 diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..4343832 --- /dev/null +++ b/routes/index.js @@ -0,0 +1,66 @@ +const express = require('express'), + router = express.Router(), + User = require("../models/user"), + Account = require("../models/account"), + passport = require('passport'); + +//Index +router.get('/', (req, res) => { + res.render('index'); +}); + +router.get('/browsers', (req, res) => { + res.render('mbrowsers'); +}); + +//Auth Routes +router.get('/register', (req, res) => { + res.render('register'); +}); + +router.post("/register", (req, res) => { + let newUser = new User({ username: req.body.username }); + User.register(newUser, req.body.password, function (err, user) { + if (err) { + //req.flash("error", err.message); + console.log(err); + return res.redirect("/register"); + } + passport.authenticate("local")(req, res, function () { + Account.create(req.body.account, (err, newAccount) => { + if (err) { + console.log(err); + } else { + newAccount.author.id = user._id; + newAccount.author.username = user.username; + newAccount.save(); + //req.flash("success", "Welcome " + user.username); + res.redirect("/"); + } + }); + }); + }); +}); + + +router.get('/login', (req, res) => { + res.render('login'); +}) + +router.post( + "/login", + passport.authenticate("local", { + successRedirect: "/", + failureRedirect: "/login", + }), + (req, res) => {} +); + +router.get("/logout", (req, res) => { + req.logout(); + //req.flash("success", "Logged out"); + res.redirect("/"); +}); + + +module.exports = router; diff --git a/routes/search.js b/routes/search.js new file mode 100644 index 0000000..85a7772 --- /dev/null +++ b/routes/search.js @@ -0,0 +1,39 @@ +const express = require('express'), + router = express.Router(), + Post = require('../models/blogPost'); + +//index +router.get('/all', (req, res) => { + Post.find({}, (err, Posts) => { + if(err) { + console.log(err); + res.redirect('/'); + } else { + res.render('search/all', { posts: Posts }); + } + }); +}); + +//Search be title +router.get('/title', (req, res) => { + Post.find({}, (err, Posts) => { + if(err) { + res.redirect('back'); + } else { + res.render('search/title', { posts: Posts }); + } + }); +}); + +//Search by tag +router.get('/tag', (req, res) => { + Post.find({}, (err, Posts) => { + if(err) { + res.redirect('back'); + } else { + res.render('search/byTag', { posts: Posts }); + } + }); +}); + +module.exports = router;
\ No newline at end of file |