Refactor utils and organize routes/schema
This commit is contained in:
18
index.js
18
index.js
@@ -4,12 +4,12 @@ const app = express();
|
||||
const PORT = 4000;
|
||||
const cors = require('cors');
|
||||
const mongoose = require('mongoose');
|
||||
const utils = require ('./utils');
|
||||
const utils = require ('./utils/utils');
|
||||
const CronJob = require('cron').CronJob;
|
||||
const config = require('./DB.js');
|
||||
const userRoutes = require('./user.route');
|
||||
const postRoutes = require('./post.route');
|
||||
const categoryRoutes = require('./category.route');
|
||||
const userRoutes = require('./routes/user.route');
|
||||
const postRoutes = require('./routes/post.route');
|
||||
const categoryRoutes = require('./routes/category.route');
|
||||
const mongoSanitize = require('express-mongo-sanitize');
|
||||
|
||||
console.log("Starting Kno-Logic Backend Server");
|
||||
@@ -19,12 +19,12 @@ mongoose.Promise = global.Promise;
|
||||
mongoose.connect(config.DB, { useNewUrlParser: true, useUnifiedTopology: true }).then(
|
||||
() => {
|
||||
console.log('Connected to dabase');
|
||||
utils.loadDefaultTemplates();
|
||||
utils.purgeSessions();
|
||||
utils.mail.loadDefaultTemplates();
|
||||
utils.cron.purgeSessions();
|
||||
},
|
||||
err => {
|
||||
console.log('Could not connect to database: ');
|
||||
console.log(err);
|
||||
console.error('Could not connect to database: ');
|
||||
console.error(err);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -46,5 +46,5 @@ app.listen(PORT, () => {
|
||||
});
|
||||
|
||||
// Cron jobs
|
||||
var purge = new CronJob('*/5 * * * *', utils.purgeSessions);
|
||||
var purge = new CronJob('*/5 * * * *', utils.cron.purgeSessions);
|
||||
purge.start();
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
const utils = require('./utils');
|
||||
const utils = require('../utils/utils');
|
||||
const express = require('express');
|
||||
const categoryRoutes = express.Router();
|
||||
|
||||
let Post = require('./post.model');
|
||||
let Category = require('./category.model');
|
||||
let Session = require('./session.model');
|
||||
let User = require('./user.model');
|
||||
let Post = require('../schema/post.model');
|
||||
let Category = require('../schema/category.model');
|
||||
let Session = require('../schema/session.model');
|
||||
let User = require('../schema/user.model');
|
||||
|
||||
/*
|
||||
POST - /category/create
|
||||
@@ -18,8 +18,8 @@ categoryRoutes.route('/create').post((req, res) => {
|
||||
res.status(401).send("Missing body");
|
||||
return;
|
||||
}
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.isAdmin(req.body.userId, (isAdmin) => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.account.isAdmin(req.body.userId, (isAdmin) => {
|
||||
if (isValidId && isAdmin) {
|
||||
let c = new Category(req.body);
|
||||
c.save()
|
||||
@@ -1,11 +1,11 @@
|
||||
const utils = require('./utils');
|
||||
const utils = require('../utils/utils');
|
||||
const express = require('express');
|
||||
const postRoutes = express.Router();
|
||||
|
||||
let Post = require('./post.model');
|
||||
let Category = require('./category.model');
|
||||
let Session = require('./session.model');
|
||||
let User = require('./user.model');
|
||||
let Post = require('../schema/post.model');
|
||||
let Category = require('../schema/category.model');
|
||||
let Session = require('../schema/session.model');
|
||||
let User = require('../schema/user.model');
|
||||
|
||||
/*
|
||||
POST - /post/create
|
||||
@@ -18,17 +18,17 @@ postRoutes.route('/create').post((req, res) => {
|
||||
res.status(401).send("Missing body");
|
||||
return;
|
||||
}
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.isAdmin(req.body.userId, (isAdmin) => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.account.isAdmin(req.body.userId, (isAdmin) => {
|
||||
if (isValidId && isAdmin) {
|
||||
let p = new Post(req.body);
|
||||
p.date = utils.dateToEpoch(p.date);
|
||||
p.date = utils.date.dateToEpoch(p.date);
|
||||
p.save()
|
||||
.then(() => {
|
||||
res.json(p);
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log(e);
|
||||
console.error(e);
|
||||
res.status(500).send("Error creating post");
|
||||
});
|
||||
} else {
|
||||
@@ -50,8 +50,8 @@ postRoutes.route('/delete').post((req, res) => {
|
||||
res.status(401).send("Missing body");
|
||||
return;
|
||||
}
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.isAdmin(req.body.userId, (isAdmin) => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.account.isAdmin(req.body.userId, (isAdmin) => {
|
||||
if (isValidId && isAdmin) {
|
||||
Post.findByIdAndDelete(req.body._id, (err, r) => {
|
||||
if (err) {
|
||||
@@ -79,8 +79,8 @@ postRoutes.route('/edit').post((req, res) => {
|
||||
res.status(401).send("Missing body");
|
||||
return;
|
||||
}
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.isAdmin(req.body.userId, (isAdmin) => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, (isValidId) => {
|
||||
utils.account.isAdmin(req.body.userId, (isAdmin) => {
|
||||
if (isValidId && isAdmin) {
|
||||
Post.findById(req.body._id, (err, r) => {
|
||||
if (err) {
|
||||
@@ -92,7 +92,7 @@ postRoutes.route('/edit').post((req, res) => {
|
||||
res.json(r);
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log(e);
|
||||
console.error(e);
|
||||
res.status(500).send("Error creating post");
|
||||
});
|
||||
res.status(200).send("Edited post");
|
||||
@@ -114,7 +114,7 @@ postRoutes.route('/edit').post((req, res) => {
|
||||
postRoutes.route('/id').post((req, res) => {
|
||||
Post.findById(req.body._id, (err, post) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
console.error(err);
|
||||
res.status(500).send("Error getting posts");
|
||||
return;
|
||||
}
|
||||
@@ -129,10 +129,10 @@ postRoutes.route('/id').post((req, res) => {
|
||||
*/
|
||||
postRoutes.route('/date').post((req, res) => {
|
||||
let d = new Date(req.body.date);
|
||||
d = utils.dateToEpoch(d);
|
||||
d = utils.date.dateToEpoch(d);
|
||||
Post.find({ date: d}, (err, post) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
console.error(err);
|
||||
res.status(500).send("Error getting posts");
|
||||
return;
|
||||
}
|
||||
@@ -149,7 +149,7 @@ postRoutes.route('/date').post((req, res) => {
|
||||
postRoutes.route('/all').get((req, res) => {
|
||||
Post.find({}, (err, postArr) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
console.error(err);
|
||||
res.status(500).send("Error getting posts");
|
||||
return;
|
||||
}
|
||||
@@ -165,10 +165,10 @@ postRoutes.route('/all').get((req, res) => {
|
||||
*/
|
||||
postRoutes.route('/today').get((req, res) => {
|
||||
let date = new Date();
|
||||
date = utils.dateToEpoch(date);
|
||||
date = utils.date.dateToEpoch(date);
|
||||
Post.find({ date: date }, (err, postArr) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
console.error(err);
|
||||
res.status(500).send("Error getting posts");
|
||||
return;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
const utils = require('./utils');
|
||||
const utils = require('../utils/utils');
|
||||
const express = require('express');
|
||||
const bcrypt = require('bcrypt');
|
||||
const userRoutes = express.Router();
|
||||
@@ -6,9 +6,9 @@ const userRoutes = express.Router();
|
||||
const saltRounds = 10;
|
||||
const sessionLength = 25;
|
||||
|
||||
let Session = require('./session.model');
|
||||
let User = require('./user.model');
|
||||
let Post = require('./post.model');
|
||||
let Session = require('../schema/session.model');
|
||||
let User = require('../schema/user.model');
|
||||
let Post = require('../schema/post.model');
|
||||
|
||||
/*
|
||||
POST - /user/create
|
||||
@@ -155,7 +155,7 @@ userRoutes.route('/logout').post((req, res) => {
|
||||
401 - Unauthorized
|
||||
*/
|
||||
userRoutes.route('/favorite/add').post((req, res) => {
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
if (valid) {
|
||||
User.findById(req.body.userId, (err, user) => {
|
||||
if (err) {
|
||||
@@ -186,7 +186,7 @@ userRoutes.route('/favorite/add').post((req, res) => {
|
||||
401 - Unauthorized
|
||||
*/
|
||||
userRoutes.route('/favorite/remove').post((req, res) => {
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
if (valid) {
|
||||
User.findById(req.body.userId, (err, user) => {
|
||||
if (err) {
|
||||
@@ -194,7 +194,7 @@ userRoutes.route('/favorite/remove').post((req, res) => {
|
||||
res.status(500).send("Error removing article");
|
||||
return;
|
||||
}
|
||||
user.favorites = utils.removeValue(user.favorites, req.body.articleId);
|
||||
user.favorites = utils.array.removeValue(user.favorites, req.body.articleId);
|
||||
user.save()
|
||||
.then(() => {
|
||||
res.status(201).send("Success removing article");
|
||||
@@ -217,7 +217,7 @@ userRoutes.route('/favorite/remove').post((req, res) => {
|
||||
401 - Unauthorized
|
||||
*/
|
||||
userRoutes.route('/favorite/get').post((req, res) => {
|
||||
utils.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
utils.account.checkSession(req.body.userId, req.body.sessionId, valid => {
|
||||
if (valid) {
|
||||
User.findById(req.body.userId, (err, user) => {
|
||||
if (err) {
|
||||
@@ -225,7 +225,6 @@ userRoutes.route('/favorite/get').post((req, res) => {
|
||||
res.status(500).send("Error removing article");
|
||||
return;
|
||||
}
|
||||
console.log(user.favorites);
|
||||
Post.find({ '_id': { $in: user.favorites } }, (err, postArray) => {
|
||||
res.json(postArray);
|
||||
})
|
||||
27
utils/account.js
Normal file
27
utils/account.js
Normal file
@@ -0,0 +1,27 @@
|
||||
let User = require('../schema/user.model');
|
||||
let Session = require('../schema/session.model');
|
||||
|
||||
// checkSession(userId, sessionId) checks if the sessionId is valid for the user
|
||||
const checkSession = (userId, sessionId, f) => {
|
||||
Session.find({ userId: userId, sessionId: sessionId }, (err, res) => {
|
||||
if (res) {
|
||||
f(true);
|
||||
return;
|
||||
}
|
||||
f(false);
|
||||
});
|
||||
}
|
||||
|
||||
// isAdmin(userId) checks if the user with userId is an administrator
|
||||
const isAdmin = (userId, f) => {
|
||||
User.findById(userId, (err, res) => {
|
||||
if (res.permission == 1) {
|
||||
f(true);
|
||||
return;
|
||||
}
|
||||
f(false);
|
||||
})
|
||||
}
|
||||
|
||||
module.exports.checkSession = checkSession;
|
||||
module.exports.isAdmin = isAdmin;
|
||||
9
utils/array.js
Normal file
9
utils/array.js
Normal file
@@ -0,0 +1,9 @@
|
||||
// removeValue(array, item) remove item from the array
|
||||
function removeValue(array, item) {
|
||||
var index = array.indexOf(item);
|
||||
if (index !== -1) {
|
||||
array.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.removeValue = removeValue;
|
||||
21
utils/cron.js
Normal file
21
utils/cron.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const config = require('../config');
|
||||
let Session = require('../schema/session.model');
|
||||
const maxSessionLength = config.maxSessionLength;
|
||||
|
||||
// purgeSessions() purge sessions that have existed for longer than maxSessionLength
|
||||
const purgeSessions = () => {
|
||||
console.log("Purging old sessions...");
|
||||
Session.find({}, (err, arr) => {
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let timeDifference = new Date().getTime() - arr[i].date;
|
||||
let dayDifference = timeDifference / (1000 * 3600 * 24);
|
||||
if (dayDifference > maxSessionLength) {
|
||||
arr[i].delete().catch(e => {
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.purgeSessions = purgeSessions;
|
||||
13
utils/date.js
Normal file
13
utils/date.js
Normal file
@@ -0,0 +1,13 @@
|
||||
// dateToEpoch(date) change the time of the date object to epoch
|
||||
function dateToEpoch(d) {
|
||||
console.log(d);
|
||||
if (d) {
|
||||
// When comparing js dates, the timezone does not matter
|
||||
// ex. May 17 EDT == May 17 GMT, May 17 EDT != May 18 GMT
|
||||
return d.setHours(0, 0, 0, 0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.dateToEpoch = dateToEpoch;
|
||||
@@ -1,26 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const nodemailer = require("nodemailer");
|
||||
var config = require('./config');
|
||||
let User = require('./user.model');
|
||||
let Session = require('./session.model');
|
||||
let Message = require('./message.model');
|
||||
var maxSessionLength = config.maxSessionLength;
|
||||
|
||||
// purgeSessions() purge sessions that have existed for longer than maxSessionLength
|
||||
const purgeSessions = () => {
|
||||
console.log("Purging old sessions...");
|
||||
Session.find({}, (err, arr) => {
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let timeDifference = new Date().getTime() - arr[i].date;
|
||||
let dayDifference = timeDifference / (1000 * 3600 * 24);
|
||||
if (dayDifference > maxSessionLength) {
|
||||
arr[i].delete().catch(e => {
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
const config = require('../config');
|
||||
let Message = require('../schema/message.model');
|
||||
|
||||
// loadDefaultTemplates() load the default email templates into the database
|
||||
// if no template exists for that name
|
||||
@@ -98,53 +79,5 @@ const sendMail = async (user, message, replacements) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// checkSession(userId, sessionId) checks if the sessionId is valid for the user
|
||||
const checkSession = (userId, sessionId, f) => {
|
||||
Session.find({ userId: userId, sessionId: sessionId }, (err, res) => {
|
||||
if (res) {
|
||||
f(true);
|
||||
return;
|
||||
}
|
||||
f(false);
|
||||
});
|
||||
}
|
||||
|
||||
// isAdmin(userId) checks if the user with userId is an administrator
|
||||
const isAdmin = (userId, f) => {
|
||||
User.findById(userId, (err, res) => {
|
||||
if (res.permission == 1) {
|
||||
f(true);
|
||||
return;
|
||||
}
|
||||
f(false);
|
||||
})
|
||||
}
|
||||
|
||||
// dateToEpoch(date) change the time of the date object to epoch
|
||||
function dateToEpoch(d) {
|
||||
console.log(d);
|
||||
if (d) {
|
||||
// When comparing js dates, the timezone does not matter
|
||||
// ex. May 17 EDT == May 17 GMT, May 17 EDT != May 18 GMT
|
||||
return d.setHours(0, 0, 0, 0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// removeValue(array, item) remove item from the array
|
||||
function removeValue(array, item) {
|
||||
var index = array.indexOf(item);
|
||||
if (index !== -1) {
|
||||
array.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.purgeSessions = purgeSessions;
|
||||
module.exports.loadDefaultTemplates = loadDefaultTemplates;
|
||||
module.exports.sendMail = sendMail;
|
||||
module.exports.checkSession = checkSession;
|
||||
module.exports.isAdmin = isAdmin;
|
||||
module.exports.dateToEpoch = dateToEpoch;
|
||||
module.exports.removeValue = removeValue;
|
||||
module.exports.sendMail = sendMail;
|
||||
11
utils/utils.js
Normal file
11
utils/utils.js
Normal file
@@ -0,0 +1,11 @@
|
||||
const account = require('./account');
|
||||
const array = require('./array');
|
||||
const cron = require('./cron');
|
||||
const date = require('./date');
|
||||
const mail = require('./mail');
|
||||
|
||||
module.exports.account = account;
|
||||
module.exports.array = array;
|
||||
module.exports.cron = cron;
|
||||
module.exports.date = date;
|
||||
module.exports.mail = mail;
|
||||
Reference in New Issue
Block a user