fix/user routing

This commit is contained in:
SowinskiBraeden committed 2025-05-05 17:33:27 -07:00
1 parent fe7152b03b
commit bb6e2eba2c
5 files changed
+32 -19

No files matched your search

+14 -11
View File
@@ -37,17 +37,6 @@ async function initDatabase() {
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 ***/
app.get('/', (req, res) => {
@@ -80,11 +69,25 @@ app.get('/aboutUs', (req, res) => {
return res.status(status.Ok);
});
// Initialize database and start app
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
@@ -6,6 +6,12 @@ const salt = 12;
module.exports = (users) => {
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) => {
const credentialSchema = joi.object({
email: joi.string().email().required(),
@@ -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;
}
+9 -2
View File
@@ -1,6 +1,11 @@
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) => {
if (!req.session.authenticated || !req.session.email) {
req.session.errMessage = "Please login to view that resource";
@@ -18,5 +23,7 @@ module.exports = (users) => {
req.user = user;
next();
}
};
}
module.exports = createMiddleware;
+1
View File
@@ -4,6 +4,7 @@ const MongoClient = require("mongodb").MongoClient;
* connectMongo returns a database connection to MongoDB
* @param {string} mongoURI
* @param {string} databaseName
* @return {MongoClient}
*/
const connectMongo = async (mongoURI, databaseName) => {
const database = await MongoClient.connect(mongoURI, { connectTimeoutMS: 1000 });
+2
View File
@@ -1,3 +1,5 @@
const status = require("../util/statuses");
module.exports = (middleware) => {
const router = require("express").Router();