fix/delete assets + plans on account delete

This commit is contained in:
SowinskiBraeden committed 2025-05-07 15:33:07 -07:00
1 parent 821843088d
commit 54024bd7a2
2 files changed
+17 -11

No files matched your search

+16 -7
View File
@@ -17,7 +17,6 @@ const getAssetSchema = (type) => {
switch (type) { switch (type) {
case "other": case "other":
assetSchema = joi.object({ assetSchema = joi.object({
ownerId: joi.string().alphanum().required(),
type: joi.string().valid("other", "stock", "saving").required(), type: joi.string().valid("other", "stock", "saving").required(),
name: joi.string().alphanum().min(3).max(30).required(), name: joi.string().alphanum().min(3).max(30).required(),
value: joi.number().min(0).required(), value: joi.number().min(0).required(),
@@ -28,7 +27,6 @@ const getAssetSchema = (type) => {
break; break;
case "saving": case "saving":
assetSchema = joi.object({ assetSchema = joi.object({
ownerId: joi.string().alphanum().required(),
type: joi.string().valid("other", "stock", "saving").required(), type: joi.string().valid("other", "stock", "saving").required(),
name: joi.string().alphanum().min(3).max(30).required(), name: joi.string().alphanum().min(3).max(30).required(),
value: joi.number().min(0).required(), value: joi.number().min(0).required(),
@@ -37,7 +35,6 @@ const getAssetSchema = (type) => {
break; break;
case "stock": case "stock":
assetSchema = joi.object({ assetSchema = joi.object({
ownerId: joi.string().alphanum().required(),
type: joi.string().valid("other", "stock", "saving").required(), type: joi.string().valid("other", "stock", "saving").required(),
ticker: joi.string().alphanum().min(3).max(5).required(), ticker: joi.string().alphanum().min(3).max(5).required(),
price: joi.number().min(0).required(), price: joi.number().min(0).required(),
@@ -70,7 +67,7 @@ module.exports = (middleware, users, plans, assets) => {
}); });
router.get('/assets', async (req, res) => { router.get('/assets', async (req, res) => {
let userAssets = await assets.find({ "ownerId": req.session.user._id }).toArray(); let userAssets = await assets.find({ userId: new ObjectId(req.session.user._id) }).toArray();
res.render('assets', { user: req.session.user, errMessage: req.session.errMessage, assets: userAssets }); res.render('assets', { user: req.session.user, errMessage: req.session.errMessage, assets: userAssets });
return res.status(status.Ok); return res.status(status.Ok);
}); });
@@ -324,6 +321,7 @@ module.exports = (middleware, users, plans, assets) => {
} }
let newAsset = { let newAsset = {
userId: new ObjectId(req.session.user._id),
...req.body, ...req.body,
updatedAt: new Date(), updatedAt: new Date(),
}; };
@@ -366,7 +364,7 @@ module.exports = (middleware, users, plans, assets) => {
return res.redirect("/assets"); return res.redirect("/assets");
} }
if (req.body.ownerId != req.session.user._id) { if (req.body.userId != req.session.user._id) {
req.session.errMessage = "Cannot change asset owner", req.session.errMessage = "Cannot change asset owner",
res.status(status.BadRequest); res.status(status.BadRequest);
return res.redirect("/assets"); return res.redirect("/assets");
@@ -434,10 +432,21 @@ module.exports = (middleware, users, plans, assets) => {
}); });
router.post("/deleteUser", (req, res) => { router.post("/deleteUser", (req, res) => {
const id = new ObjectId(req.body.id); // not as critical if results aren't as expected only if crashing
assets.deleteMany({ userId: new ObjectId(req.session.user._id) }).catch((err) => {
console.error("Error deleting user assets: ", err);
req.session.errMessage = "An error occured while deleting your account. Please try again.";
return res.status(status.InternalServerError).redirect("/profile");
});
plans.deleteMany({ userId: new ObjectId(req.session.user._id) }).catch((err) => {
console.error("Error deleting user assets: ", err);
req.session.errMessage = "An error occured while deleting your account. Please try again.";
return res.status(status.InternalServerError).redirect("/profile");
});
users.deleteOne( users.deleteOne(
{ "_id": id }, { _id: new ObjectId(req.session.user._id) },
).then((result) => { ).then((result) => {
if (result.deletedCount === 0) { if (result.deletedCount === 0) {
console.error(`User not found: ${req.body.id}`); console.error(`User not found: ${req.body.id}`);
+1 -4
View File
@@ -38,7 +38,6 @@
<!-- Create other asset form --> <!-- Create other asset form -->
<form method="POST" action="/createAsset" id="create-other-asset-form"> <form method="POST" action="/createAsset" id="create-other-asset-form">
<input style="display: none;" value="<%= user._id %>" name="ownerId" type="text">
<input style="display: none;" value="other" name="type" type="text"> <input style="display: none;" value="other" name="type" type="text">
<label for="name" class="block text-sm font-medium text-gray-700 mt-2">Asset Name</label> <label for="name" class="block text-sm font-medium text-gray-700 mt-2">Asset Name</label>
@@ -72,7 +71,6 @@
<!-- Create savings asset form --> <!-- Create savings asset form -->
<form style="display: none;" method="POST" action="/createAsset" id="create-saving-asset-form"> <form style="display: none;" method="POST" action="/createAsset" id="create-saving-asset-form">
<input style="display: none;" value="<%= user._id %>" name="ownerId" type="text">
<input style="display: none;" value="saving" name="type" type="text"> <input style="display: none;" value="saving" name="type" type="text">
<label for="name" class="block text-sm font-medium text-gray-700 mt-2">Savings Name</label> <label for="name" class="block text-sm font-medium text-gray-700 mt-2">Savings Name</label>
@@ -100,7 +98,6 @@
<!-- Create stock asset form --> <!-- Create stock asset form -->
<form style="display: none;" method="POST" action="/createAsset" id="create-stock-asset-form"> <form style="display: none;" method="POST" action="/createAsset" id="create-stock-asset-form">
<input style="display: none;" value="<%= user._id %>" name="ownerId" type="text">
<input style="display: none;" value="stock" name="type" type="text"> <input style="display: none;" value="stock" name="type" type="text">
<label for="ticker" class="block text-sm font-medium text-gray-700 mt-2">Stock Ticker</label> <label for="ticker" class="block text-sm font-medium text-gray-700 mt-2">Stock Ticker</label>
@@ -279,7 +276,7 @@
<form id="<%= asset._id %>-form" method="POST" action="/updateAsset"> <form id="<%= asset._id %>-form" method="POST" action="/updateAsset">
<input id="type-<%= asset._id %>" name="type" type="text" hidden value="<%= asset.type %>"> <input id="type-<%= asset._id %>" name="type" type="text" hidden value="<%= asset.type %>">
<input id="id-<%= asset._id %>" name="id" type="text" hidden value="<%= asset._id %>"> <input id="id-<%= asset._id %>" name="id" type="text" hidden value="<%= asset._id %>">
<input id="ownerId-<%= asset.ownerId %>" name="ownerId" type="text" hidden value="<%= asset.ownerId %>"> <input id="userId-<%= asset.userId %>" name="userId" type="text" hidden value="<%= asset.userId %>">
<% if (asset.type != "stock") { %> <% if (asset.type != "stock") { %>
<label for="name" class="block text-sm font-medium text-gray-700 mt-6">Name</label> <label for="name" class="block text-sm font-medium text-gray-700 mt-6">Name</label>