summaryrefslogtreecommitdiff
path: root/routes/blog.js
blob: 0bf31f3b3cb78aa84ecb7aa720ae72352286746e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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;