summaryrefslogtreecommitdiff
path: root/routes/account.js
diff options
context:
space:
mode:
authorroot <root@vagrantz.xyz>2021-04-06 10:57:50 +0000
committerroot <root@vagrantz.xyz>2021-04-06 10:57:50 +0000
commit8170d5bc0544fbc02155b8b57751cd1dec33dd69 (patch)
treed5cffb086fe6d5585c1e00ea5d5d2d907e6d2cd6 /routes/account.js
initial public commitHEADmaster
Diffstat (limited to 'routes/account.js')
-rw-r--r--routes/account.js184
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;