update/create middleware
This commit is contained in:
5 files changed
+127
-69
No files matched your search
+31
-17
@@ -1,9 +1,12 @@
|
||||
const joi = require("joi");
|
||||
const status = require("../util/statuses");
|
||||
const bcrypt = require('bcrypt');
|
||||
const joi = require("joi");
|
||||
const salt = 12;
|
||||
|
||||
module.exports = (app, users) => {
|
||||
app.post("/login", async (req, res) => {
|
||||
module.exports = (users) => {
|
||||
const router = require("express").Router();
|
||||
|
||||
router.post("/login", async (req, res) => {
|
||||
const credentialSchema = joi.object({
|
||||
email: joi.string().email().required(),
|
||||
password: joi.string().max(20).required(),
|
||||
@@ -13,32 +16,33 @@ module.exports = (app, users) => {
|
||||
|
||||
if (valid.err) {
|
||||
req.session.errMessage = "Invalid input";
|
||||
res.status(400);
|
||||
res.status(status.BadRequest);
|
||||
return res.redirect("/login");
|
||||
}
|
||||
|
||||
users.findOne({ "email": req.body.email }).then((user) => {
|
||||
if (!user) {
|
||||
req.session.errMessage = "User not found";
|
||||
res.status(404);
|
||||
return res.redirect("/login");
|
||||
res.status(status.NotFound);
|
||||
return res.redirect("/login");
|
||||
}
|
||||
|
||||
if (!bcrypt.compare(req.body.password, user.password)) {
|
||||
req.session.errMessage = "Incorrect password";
|
||||
res.status(401);
|
||||
res.status(status.Unauthorized);
|
||||
return res.redirect("/login");
|
||||
}
|
||||
|
||||
// ignorin sessions for now just have basic login for demo
|
||||
// TODO: actually add sessions
|
||||
req.session.authenticated = true;
|
||||
req.session.email = req.body.email;
|
||||
|
||||
req.session.errMessage = "";
|
||||
res.redirect("/home");
|
||||
return res.status(status.Ok);
|
||||
});
|
||||
});
|
||||
|
||||
app.post("/signup", async (req, res) => {
|
||||
router.post("/signup", async (req, res) => {
|
||||
const userSchema = joi.object({
|
||||
email: joi.string().email().required(),
|
||||
// name: joi.string().alphanum().max(20).required(),
|
||||
@@ -50,13 +54,13 @@ module.exports = (app, users) => {
|
||||
|
||||
if (valid.err) {
|
||||
req.session.errMessage = "Invalid input",
|
||||
res.status(400);
|
||||
res.status(status.BadRequest);
|
||||
return res.redirect("/signup");
|
||||
}
|
||||
|
||||
if (req.body.password != req.body.repassword) {
|
||||
req.session.errMessage = "Passwords must match";
|
||||
res.status(400);
|
||||
res.status(status.BadRequest);
|
||||
return res.redirect("/signup");
|
||||
}
|
||||
|
||||
@@ -68,15 +72,25 @@ module.exports = (app, users) => {
|
||||
password: hashedPassword,
|
||||
}).then((results, err) => {
|
||||
if (err) {
|
||||
res.status(500);
|
||||
res.status(status.InternalServerError);
|
||||
console.error(err);
|
||||
return res.send("Internal server error");
|
||||
}
|
||||
|
||||
// TODO: Add session handling here and auto redirect to home and be authenticated
|
||||
req.session.errMessage = "Please login to view that resource";
|
||||
res.status(200);
|
||||
return res.redirect("/login");
|
||||
req.session.authenticated = true;
|
||||
req.session.email = req.body.email;
|
||||
|
||||
req.session.errMessage = "";
|
||||
res.status(status.Ok);
|
||||
return res.redirect("/home");
|
||||
});
|
||||
});
|
||||
|
||||
router.get("/logout", (req, res) => {
|
||||
req.session.destroy();
|
||||
// res.status(status.Unauthorized);
|
||||
return res.redirect('/login');
|
||||
});
|
||||
|
||||
return router;
|
||||
}
|
||||
Reference in new issue
Block a user