fix/delete assets + plans on account delete
This commit is contained in:
2 files changed
+18
-12
No files matched your search
+17
-8
@@ -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}`);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in new issue
Block a user