summaryrefslogtreecommitdiff
path: root/server.js
diff options
context:
space:
mode:
Diffstat (limited to 'server.js')
-rw-r--r--server.js282
1 files changed, 232 insertions, 50 deletions
diff --git a/server.js b/server.js
index 848afa0..a0326af 100644
--- a/server.js
+++ b/server.js
@@ -3,6 +3,7 @@ const path = require('path');
const bcrypt = require('bcrypt');
const session = require('express-session');
const formidable = require('formidable');
+const quotes = require('quotes-go');
const fs = require('fs');
//const ejs = require('ejs');
const mongoose = require('mongoose');
@@ -37,11 +38,19 @@ app.get('/', async (req, res) => {
User.findById(req.session.userId)
.exec(async (error, user) => {
if (error) {
- res.render('index', { req: req, User: User, name: null });
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else {
if (user === null) {
//let err = new Error('Not logged in!');
- res.render('index', { req: req, User: User, name: null });
+ res.render('index', {
+ req: req,
+ User: User,
+ name: null,
+ quote: quotes.getRandomQuote()
+ });
//return err.status = 400;
//return next(err);
} else {
@@ -72,8 +81,25 @@ app.get('/', async (req, res) => {
"type": "trade",
"user": user.username
}).countDocuments();
+
let EntryCount = await EntryItem.countDocuments();
let UserCount = await User.countDocuments();
+
+ let rawUptime = process.uptime();
+ const date = new Date(rawUptime * 1000);
+ const days = date.getUTCDate() - 1,
+ hours = date.getUTCHours(),
+ minutes = date.getUTCMinutes(),
+ seconds = date.getUTCSeconds(),
+ milliseconds = date.getUTCMilliseconds();
+ let segments = [];
+ if (days > 0) segments.push(days + ' day' + ((days == 1) ? '' : 's'));
+ if (hours > 0) segments.push(hours + ' hour' + ((hours == 1) ? '' : 's'));
+ if (minutes > 0) segments.push(minutes + ' minute' + ((minutes == 1) ? '' : 's'));
+ if (seconds > 0) segments.push(seconds + ' second' + ((seconds == 1) ? '' : 's'));
+ if (milliseconds > 0) segments.push(milliseconds + ' millisecond' + ((seconds == 1) ? '' : 's'));
+ const dateString = segments.join(', ');
+
return res.render('index', {
req: req,
User: User,
@@ -87,23 +113,10 @@ app.get('/', async (req, res) => {
loop3: loop3,
loop3Count: loop3Count,
EntryCount: EntryCount,
- UserCount: UserCount
+ UserCount: UserCount,
+ dateString: dateString,
+ quote: quotes.getRandomQuote()
});
- // (await loop1).forEach(entryItem => {
- // })
- // loop.forEach(entryItem => {
- // parms = parms;
- // });
- // const entryItemsPurchase = (await entryItems.find({ username: user.name, "type": "purchase" })).forEach(entryItem => {});
- // const entryItemsSale = (await entryItems.find({ username: user.name, "type": "sale" })).forEach(entryItem => {});
- // const entryItemsTrade = (await entryItems.find({ username: user.name, "type": "trade" })).forEach(entryItem => {});
-
- //entryItems.find({ username: user.name, "type": "trade" }).forEach(entryItem => {});
-
- // entryItems.find({"user": user.username, "type": "purchase"}).forEach(entryItem => {
- // console.log(entryItemsPurchase.forEach(entryItem => {
- // entryItem.cars;
- // }));
}
}
});
@@ -115,11 +128,15 @@ app.get('/', async (req, res) => {
// });
app.get('/login', (req, res) => {
- res.render('login');
+ res.render('login', {
+ quote: quotes.getRandomQuote()
+ });
});
app.get('/signup', (req, res) => {
- res.render('signup');
+ res.render('signup', {
+ quote: quotes.getRandomQuote()
+ });
});
app.get('/api/v1/entries', async (req, res) => {
@@ -137,10 +154,16 @@ app.post('/submitEntry', async (req, res) => {
User.findById(req.session.userId)
.exec(async (error, user) => {
if (error) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else {
if (user === null) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Not logged in.'
+ });
} else {
await EntryItem.create({
user: user.username,
@@ -150,9 +173,9 @@ app.post('/submitEntry', async (req, res) => {
price: req.body.priceType,
date: new Date()
});
- }
- return res.redirect(req.get('referer'));
+ return res.redirect(req.get('referer'));
+ }
}
});
@@ -167,9 +190,15 @@ app.post('/login', async (req, res) => {
})
.exec((err, user) => {
if (err) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else if (!user) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown user.'
+ });
}
bcrypt.compare(password, user.password, (err, result) => {
@@ -186,10 +215,16 @@ app.post('/login', async (req, res) => {
if (error || !user) {
//let err = new Error('Wrong username or password.');
//err.status = 401;
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown username or password.'
+ });
} else {
req.session.userId = user._id;
- return res.redirect('/');
+ if (req.get('referer') == 'http://' + req.get('host') + '/login' || req.get('referer') == 'https://' + req.get('host') + '/login') {
+ return res.redirect('/');
+ }
+ return res.redirect(req.get('referer'));
}
});
}
@@ -201,12 +236,16 @@ app.post('/signup', async (req, res) => {
const userData = {
email: req.body.emailSignup,
username: req.body.userSignup,
- password: await hashedPass
+ password: await hashedPass,
+ registrationIP: req.headers['x-forwarded-for'] || req.connection.remoteAddress
};
User.create(userData, (err, user) => {
if (err) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Username already exists.'
+ });
} else {
req.session.userId = user._id;
return res.redirect('/');
@@ -219,7 +258,10 @@ app.post('/logout', (req, res, next) => {
if (req.session) {
req.session.destroy((err) => {
if (err) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else {
return res.redirect('/');
}
@@ -227,31 +269,46 @@ app.post('/logout', (req, res, next) => {
}
});
-app.get('/logout', (req, res, next) => {
- if (req.session) {
- req.session.userId.destroy((err) => {
- if (err) {
- return res.render('error');
- } else {
- return res.redirect('/');
- }
- });
- }
-});
+// app.get('/logout', (req, res, next) => {
+// if (req.session) {
+// req.session.userId.destroy((err) => {
+// if (err) {
+// return res.render('error', {
+// quote: quotes.getRandomQuote(),
+// errorMsg: 'Unknown error.'
+// });
+// } else {
+// return res.redirect('/');
+// }
+// });
+// }
+// });
app.get('/profile', async (req, res, next) => {
User.findById(req.session.userId)
.exec((error, user) => {
if (error) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else {
if (user === null) {
//let err = new Error('Not logged in!');
- return res.render('login', { req: req, User: User });
+ return res.render('login', {
+ req: req,
+ User: User,
+ quote: quotes.getRandomQuote()
+ });
//return err.status = 400;
//return next(err);
} else {
- return res.render('profile', { req: req, User: User, name: user.username });
+ return res.render('profile', {
+ req: req,
+ User: User,
+ name: user.username,
+ quote: quotes.getRandomQuote()
+ });
}
}
});
@@ -261,7 +318,10 @@ app.get('/profile/legacy', async (req, res, next) => {
User.findById(req.session.userId)
.exec((error, user) => {
if (error) {
- return res.render('error');
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
} else {
if (user === null) {
return res.json({ name: 'null' });
@@ -272,9 +332,11 @@ app.get('/profile/legacy', async (req, res, next) => {
});
});
-app.get('/error', (req, res) => {
- res.render('error');
-});
+// app.get('/error', (req, res) => {
+// res.render('error', {
+// quote: quotes.getRandomQuote()
+// });
+// });
app.get('/terms', (req, res) => {
res.render('terms');
@@ -294,7 +356,28 @@ app.get('/terms', (req, res) => {
// });
app.get('/marketplace', (req, res) => {
- res.redirect('/')
+ User.findById(req.session.userId)
+ .exec((error, user) => {
+ if (error) {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
+ } else {
+ if (user === null) {
+ //let err = new Error('Not logged in!');
+ return res.render('login', {
+ req: req,
+ User: User,
+ quote: quotes.getRandomQuote()
+ });
+ //return err.status = 400;
+ //return next(err);
+ } else {
+ return res.redirect('/')
+ }
+ }
+ })
})
app.post('/closeExampleVideo', async (req, res) => {
@@ -307,6 +390,105 @@ app.post('/openExampleVideo', async (req, res) => {
return res.redirect('/');
});
+app.get('/admin', (req, res) => {
+ User.findById(req.session.userId)
+ .exec((error, user) => {
+ if (error) {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
+ } else {
+ if (user === null) {
+ //let err = new Error('Not logged in!');
+ return res.render('login', {
+ req: req,
+ User: User,
+ quote: quotes.getRandomQuote()
+ });
+ //return err.status = 400;
+ //return next(err);
+ } else {
+ if (user.username == 'sin') {
+ return res.redirect('/')
+ // return res.render('profile', {
+ // req: req,
+ // User: User,
+ // name: user.username,
+ // quote: quotes.getRandomQuote()
+ // });
+ } else {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Not authorized.'
+ });
+ }
+ }
+ }
+ })
+})
+
+app.get('/change-password', (req, res) => {
+ User.findById(req.session.userId)
+ .exec((error, user) => {
+ if (error) {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
+ } else {
+ if (user === null) {
+ //let err = new Error('Not logged in!');
+ return res.render('login', {
+ req: req,
+ User: User,
+ quote: quotes.getRandomQuote()
+ });
+ //return err.status = 400;
+ //return next(err);
+ } else {
+ return res.render('change-password', {
+ quote: quotes.getRandomQuote()
+ });
+ }
+ }
+ })
+});
+
+app.post('/change-password', async (req, res) => {
+ if (req.body.passReset && req.body.passResetCheck) {
+ let hashedPass = bcrypt.hash(req.body.passReset, 10);
+ const userData = {
+ password: await hashedPass
+ };
+
+ User.findByIdAndUpdate(req.session.userId, userData, (err, user) => {
+ if (err) {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Error changing password.'
+ });
+ } else {
+ return res.redirect('/');
+ }
+ })
+ }
+});
+
+app.post('/deleteItem/:id', (req, res) => {
+ EntryItem.findByIdAndDelete(req.params.id)
+ .exec((err, user) => {
+ if (err) {
+ return res.render('error', {
+ quote: quotes.getRandomQuote(),
+ errorMsg: 'Unknown error.'
+ });
+ } else {
+ res.redirect('/')
+ }
+ })
+})
+
app.get('*', (req, res) => {
res.redirect('/')
})