Started User routes.

This commit is contained in:
Dylan K 2023-03-25 13:41:51 -05:00
parent 8130e598d5
commit 9fb36d4328
6 changed files with 131 additions and 2 deletions

View File

@ -0,0 +1,9 @@
const router = require("express").Router();
const userRoutes = require("./user-routes");
const itemRoutes = require("./item-routes");
router.use('/users', userRoutes);
router.use('/items', itemRoutes);
module.exports = router;

View File

View File

@ -0,0 +1,92 @@
const router = require("express").Router();
const { User } = require("../../models");
const withAuth = require("../../utils/auth");
// GET all User
router.get("/", (req, res) => {
User.findAll({
attributes: { exclude: ['password'] }
})
.then(dbUserData => res.json(dbUserData))
.catch(err => {
console.log(err);
res.status(500).json(err);
});
});
// GET a single User by id
router.get("/:id", (req, res) => {
User.findOne({
attributes: { exclude: ['password'] },
where: {
user_id: req.params.id
}
})
.then(dbUserData => {
if (!dbUserData) {
res.status(404).json({ message: "No user found with this id."});
return;
}
res.json(dbUserData);
})
.catch(err => {
console.log(err);
res.status(500).json(err);
});
});
// Create a User
router.post("/", (req, res) => {
User.create({
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
password: req.body.password
})
.then(dbUserData => {
req.session.save(() => {
req.session.user_id = dbUserData.user_id;
req.session.email = dbUserData.email;
req.session.loggedIn = true;
res.json(dbUserData);
});
})
.catch(err => {
console.log(err);
res.status(500).json(err);
});
});
// Login
router.post("/login", (req, res) => {
User.findOne({
where: {
email: req.body.email,
},
})
.then((dbUserData) => {
if (!dbUserData) {
res.status(400).json({ message: "Incorrect email or password." });
console.log("Incorrect email or password.");
return;
}
const validPassword = dbUserData.checkPassword(req.body.password);
console.log(dbUserData)
if (!validPassword) {
res.status(400).json({ message: "Incorrect email or password." });
console.log("Incorrect email or password.");
return;
}
req.session.save(() => {
req.session.user_id = dbUserData.user_id;
req.session.email = dbUserData.email;
req.session.loggedIn = true;
res.json({ ok: true, user: dbUserData, message: "You're logged in! Start doing things. Now." });
console.log("You're logged in! Start doing things. Now.");
});
});
});

View File

@ -0,0 +1,15 @@
const router = require("express").Router();
const apiRoutes = require("./api");
const homeRoutes = require("./home-routes");
const editRoutes = require("./edit-routes"); // Is this one necessary? Unsure.
router.use("/api", apiRoutes);
router.use("/", homeRoutes);
router.use("/edit", editRoutes); // Might not need this either.
router.use((req, res) => {
res.status(404).end();
});
module.exports = router;

View File

@ -3,7 +3,11 @@ const User = require("./User");
const Item = require("./Item");
// Create associations
User.hasMany(Item, {
foreignKey: 'user_id'
});
Item.belongsTo(User, {
foreignKey: 'id' // "id" might be wrong? It might need to be "user_id", but that doesn't make sense to me, AND IT NEVER HAS.
});
module.exports = { User, Item };

9
utils/auth.js Normal file
View File

@ -0,0 +1,9 @@
const withAuth = (req, res, next) => {
if (!req.session.user_id) { // NOTE: Make sure that .user_id is the correct variable name.
res.redirect("/login");
} else {
next();
}
};
module.exports = withAuth;