diff options
Diffstat (limited to 'routes/account.js')
-rw-r--r-- | routes/account.js | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/routes/account.js b/routes/account.js new file mode 100644 index 0000000..7702a0c --- /dev/null +++ b/routes/account.js @@ -0,0 +1,184 @@ +const express = require('express'), + router = express.Router({ mergeParams: true }), + fs = require('fs'), + middleware = require('../middleware'), + Recipe = require('../models/recipe'), + Step = require('../models/step'), + User = require('../models/user'), + Account = require('../models/account'); + +// SHOW +router.get('/:id', middleware.getUser, middleware.getCats, (req, res) => { + let at = { + id: req.daUser._id, + username: req.daUser.username + } + Account.findOne({ author: at }, (err, foundAccount) => { + if(err) { + console.log(err); + req.flash("error", err.message); + res.redirect('back'); + } else { + console.log('found account: ', foundAccount); + let ath = { + id: foundAccount.author.id, + username: foundAccount.author.username + } + Recipe.find({ author: ath }, (err, foundRecipes) => { + if(err) { + console.log(err); + } else { + console.log('found recipes: ', foundRecipes); + const page = 'account'; + res.render('account/account', { + page: page, + usr: req.user, + account: foundAccount, + cats: req.cats, + recipes: foundRecipes + }); + } + }); + } + }); +}); + +//EDIT BIO PAGE +router.get('/:id/bio/edit', middleware.checkAccountOwnership, (req, res) => { + let ath = { + id: req.user._id, + username: req.user.username + } + Account.findOne({ author: ath }, (err, foundAccount) => { + if(err) { + console.log(err); + } else { + const page = 'account'; + res.render('account/editBio', { + page: page, + usr: req.user, + account: foundAccount + }); + } + }); +}); + +// UPDATE +router.put('/:id', middleware.checkAccountOwnership, (req, res) => { + let ath = { + id: req.user._id, + username: req.user.username + } + Account.findOne({ author: ath }, (err, foundAccount) => { + if(err) { + console.log(err); + req.flash("error", err.message); + res.redirect('back'); + } else { + foundAccount.bio.name = req.body.bio.name; + foundAccount.bio.website = req.body.bio.website; + foundAccount.bio.about = req.body.bio.about; + foundAccount.save(); + res.redirect(`/account/${req.params.id}`); + } + }); +}); + +// SAVED RECIPES +router.get(`/:id/saved`, middleware.checkAccountOwnership, (req, res) => { + let ath = { + id: req.user._id, + username: req.user.username + } + Account.findOne({ author: ath }).populate('favorites').exec((err, foundAccount) => { + if(err) { + console.log(err); + } else { + const page ='account'; + res.render(`account/saved`, { + page: page, + usr: req.user, + recipes: foundAccount.favorites, + account: foundAccount + }); + } + }) +}); + +//CHANGE PASSWORD +router.get(`/:id/changepass`, middleware.checkAccountOwnership, (req, res) => { + let ath = { + id: req.user._id, + username: req.user.username + } + Account.findOne({ author: ath }, (err, foundAccount) => { + if(err) { + console.log(err); + } else { + const page = 'account' + res.render(`account/changepass`, { + page: page, + usr: req.user, + account: foundAccount + }) + } + }); +}); + +router.post(`/:id/changepass`, middleware.checkAccountOwnership, (req, res) => { + User.findById(req.params.id, (err, foundUser) => { + if(err) { + console.log(err); + req.flash("error", err.message); + res.redirect('back'); + } else { + foundUser.changePassword(req.body.oldpassword, req.body.newpassword, (err) => { + if(err) { + console.log(`Incorrect password!`); + req.flash("error", err.message); + res.redirect('back'); + } else { + console.log(`Password was changed!`); + req.flash("success", `Password was changed`); + res.redirect(`/account/${req.params.id}`); + } + }); + } + }); +}); + +//DELETE ACCOUNT/USER +router.delete(`/:id`, middleware.checkAccountOwnership, (req, res) => { + let ath = { + id: req.user._id, + username: req.user.username + } + Account.findOneAndDelete({ author: ath }, (err) => { + if(err) { + console.log(err); + req.flash("error", err.message); + res.redirect('back'); + } else { + console.log('Deleted account...'); + } + }); + User.findByIdAndDelete(req.user._id, (err) => { + if(err) { + console.log(err); + req.flash("error", err.message); + res.redirect('back'); + } else { + console.log(`Deleted user...`); + req.flash("success", `Deleted user...`); + + } + }); + const userDir = `/var/www/inter-kitchen/public/images/${req.user.username}`; + fs.rmdir(userDir, { recursive: true }, (err) => { + if(err) console.log(err); + console.log(`Deleted ${userDir}`); + }); + res.redirect(`/`); +}); + +module.exports = router; |