Merge branch 'dev' into feature/calculations

This commit is contained in:
Nícolas Agostini authored and GitHub committed 2025-05-06 14:32:43 -07:00
commit 03c3f9a610
6 files changed
+235 -10

No files matched your search

+57 -2
View File
@@ -1,5 +1,7 @@
const status = require("../util/statuses");
const bcrypt = require('bcrypt');
const joi = require("joi");
const salt = 12;
module.exports = (middleware, users, plans) => {
const router = require("express").Router();
@@ -94,7 +96,7 @@ module.exports = (middleware, users, plans) => {
});
router.get('/profile', (req, res) => {
res.render('profiles', { user: req.user });
res.render('profile', { user: req.user, errMessage: req.session.errMessage });
return res.status(status.Ok);
});
@@ -111,7 +113,7 @@ module.exports = (middleware, users, plans) => {
router.post('/questionnaire', (req, res) => {
// console.log("Questionnaire POST body:", req.body);
const questionnaireSchema = joi.object({
dob: joi.date().required(),
education: joi.string().valid('primary', 'secondary', 'tertiary', 'postgraduate').required(),
@@ -167,5 +169,58 @@ module.exports = (middleware, users, plans) => {
});
});
router.post("/updateAccount", async (req, res) => {
const accountSchema = joi.object({
email: joi.string().email(),
name: joi.string().alphanum().max(20),
password: joi.string().max(20).min(8),
repassword: joi.string().max(20).min(8),
});
const valid = accountSchema.validate(req.body);
if (valid.err) {
req.session.errMessage = "Invalid input",
res.status(status.BadRequest);
return res.redirect("/profile");
}
let update = {
// email: req.body.email,
name: req.body.name,
};
if ((req.body.password != "") && (req.body.password != req.body.repassword)) {
req.session.errMessage = "New passwords must match";
res.status(status.BadRequest);
return res.redirect("/profile");
} else if (req.body.password != "") {
let hashedPassword = await bcrypt.hashSync(req.body.password, salt);
update.password = hashedPassword;
}
users.updateOne(
{ email: req.session.email },
{ $set: update }
).then((result) => {
if (result.matchedCount === 0) {
console.log(`User not found during account update: ${req.session.email}`);
req.session.errMessage = "User session invalid. Please log in again.";
res.status(status.NotFound).redirect("/login");
return;
}
if (result.modifiedCount === 0 && result.matchedCount === 1) {
console.log(`User account data unchanged (already up-to-date): ${req.session.email}`);
}
req.session.errMessage = "";
return res.status(status.Ok).redirect("/profile");
}).catch(err => {
console.error("Error updating account in database:", err);
req.session.errMessage = "An error occurred while saving your information. Please try again.";
return res.status(status.InternalServerError).redirect("/profile");
});
});
return router;
};