Merge branch 'dev' into feature/questionnaire

This commit is contained in:
Nícolas Agostini authored and GitHub committed 2025-05-05 18:18:45 -07:00
commit 612bb262d1
5 files changed
+42 -49

No files matched your search

+21 -38
View File
@@ -38,17 +38,6 @@ async function initDatabase() {
users = await getCollection(db, "users"); users = await getCollection(db, "users");
} }
initDatabase().then(() => {
// Import authentication handler
app.use(require("./src/auth/authentication")(users));
// Import middleware
const middleware = require("./src/auth/middleware")(users);
// Apply middleware to protected user routes
app.use(require("./src/router/user")(middleware));
});
/*** ROUTINGS ***/ /*** ROUTINGS ***/
app.get('/', (req, res) => { app.get('/', (req, res) => {
@@ -81,31 +70,6 @@ app.get('/aboutUs', (req, res) => {
return res.status(status.Ok); return res.status(status.Ok);
}); });
app.get('/assets', (req, res) => {
res.render('assets');
return res.status(status.Ok);
});
app.get('/plans', (req, res) => {
res.render('plans');
return res.status(status.Ok);
});
app.get('/more', (req, res) => {
res.render('more');
return res.status(status.Ok);
});
app.get('/profile', (req, res) => {
res.render('profile');
return res.status(status.Ok);
});
app.get('/settings', (req, res) => {
res.render('settings');
return res.status(status.Ok);
});
app.get('/logout', (req, res) => { app.get('/logout', (req, res) => {
req.session.destroy(); req.session.destroy();
return res.redirect('/login'); return res.redirect('/login');
@@ -116,6 +80,25 @@ app.get('/*splat', (req, res) => {
return res.status(status.NotFound); return res.status(status.NotFound);
}); });
app.listen(port, () => { // Initialize database and start app
console.log(`Server listening on port ${port}`); initDatabase().then(() => {
console.log("Successfully connected to MongoDB");
// Import authentication handler
app.use(require("./src/auth/authentication")(users));
// Import middleware & apply to user routes
const middleware = require("./src/auth/middleware")(users);
app.use(require("./src/router/user")(middleware));
// 404 handler
app.get('/*splat', (req, res) => {
res.send('404 Not Found');
return res.status(status.NotFound);
});
// Start app
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
}); });
+6 -6
View File
@@ -5,6 +5,12 @@ const salt = 12;
module.exports = (users) => { module.exports = (users) => {
const router = require("express").Router(); const router = require("express").Router();
router.get("/logout", (req, res) => {
req.session.destroy();
// res.status(status.Unauthorized);
return res.redirect('/login');
});
router.post("/login", async (req, res) => { router.post("/login", async (req, res) => {
const credentialSchema = joi.object({ const credentialSchema = joi.object({
@@ -86,11 +92,5 @@ module.exports = (users) => {
}); });
}); });
router.get("/logout", (req, res) => {
req.session.destroy();
// res.status(status.Unauthorized);
return res.redirect('/login');
});
return router; return router;
} }
+11 -4
View File
@@ -1,6 +1,11 @@
const status = require("../util/statuses"); const status = require("../util/statuses");
module.exports = (users) => { /**
* createMiddleware returns a middleware function for express.
* @param {MongoClient.collection} users
* @return {async function}
*/
const createMiddleware = (users) => {
return async (req, res, next) => { return async (req, res, next) => {
if (!req.session.authenticated || !req.session.email) { if (!req.session.authenticated || !req.session.email) {
req.session.errMessage = "Please login to view that resource"; req.session.errMessage = "Please login to view that resource";
@@ -9,7 +14,7 @@ module.exports = (users) => {
} }
let user = await users.findOne({ "email": req.session.email }).then((user) => user); let user = await users.findOne({ "email": req.session.email }).then((user) => user);
if (!user) { if (!user) {
req.session.errMessage = "User not found"; req.session.errMessage = "User not found";
res.redirect("/login"); res.redirect("/login");
@@ -18,5 +23,7 @@ module.exports = (users) => {
req.user = user; req.user = user;
next(); next();
} };
}; }
module.exports = createMiddleware;
+2 -1
View File
@@ -3,7 +3,8 @@ const MongoClient = require("mongodb").MongoClient;
/** /**
* connectMongo returns a database connection to MongoDB * connectMongo returns a database connection to MongoDB
* @param {string} mongoURI * @param {string} mongoURI
* @param {string} databaseName * @param {string} databaseName
* @return {MongoClient}
*/ */
const connectMongo = async (mongoURI, databaseName) => { const connectMongo = async (mongoURI, databaseName) => {
const database = await MongoClient.connect(mongoURI, { connectTimeoutMS: 1000 }); const database = await MongoClient.connect(mongoURI, { connectTimeoutMS: 1000 });
+2
View File
@@ -1,3 +1,5 @@
const status = require("../util/statuses");
module.exports = (middleware) => { module.exports = (middleware) => {
const router = require("express").Router(); const router = require("express").Router();