fix/user routing
This commit is contained in:
5 files changed
+32
-19
No files matched your search
@@ -37,17 +37,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) => {
|
||||||
@@ -80,11 +69,25 @@ app.get('/aboutUs', (req, res) => {
|
|||||||
return res.status(status.Ok);
|
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) => {
|
app.get('/*splat', (req, res) => {
|
||||||
res.send('404 Not Found');
|
res.send('404 Not Found');
|
||||||
return res.status(status.NotFound);
|
return res.status(status.NotFound);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Start app
|
||||||
app.listen(port, () => {
|
app.listen(port, () => {
|
||||||
console.log(`Server listening on port ${port}`);
|
console.log(`Server listening on port ${port}`);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
@@ -6,6 +6,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({
|
||||||
email: joi.string().email().required(),
|
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;
|
return router;
|
||||||
}
|
}
|
||||||
@@ -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";
|
||||||
@@ -18,5 +23,7 @@ module.exports = (users) => {
|
|||||||
|
|
||||||
req.user = user;
|
req.user = user;
|
||||||
next();
|
next();
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createMiddleware;
|
||||||
@@ -4,6 +4,7 @@ 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 });
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user