summaryrefslogtreecommitdiff
path: root/routes
diff options
context:
space:
mode:
authorBakedSnake <gilferrandm@gmail.com>2021-03-17 12:58:53 +0100
committerBakedSnake <gilferrandm@gmail.com>2021-03-17 12:58:53 +0100
commit188527c6b55a2d64d5f76c5d3e094da45c69b0c9 (patch)
tree8c6c41a2ffe04af81483ec36f72d328c3c76780a /routes
Public versionHEADmaster
Diffstat (limited to 'routes')
-rw-r--r--routes/account.js0
-rw-r--r--routes/blog.js103
-rw-r--r--routes/cmmnts.js78
-rw-r--r--routes/index.js66
-rw-r--r--routes/search.js39
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