From 821843088dbf8908e592b013d6a1a9bd199210cd Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Wed, 7 May 2025 15:04:11 -0700 Subject: [PATCH 1/2] update/delete user account --- src/auth/authentication.js | 1 + src/router/user.js | 41 ++++++++++++++++++++++++----- src/views/profile.ejs | 53 +++++++++++++++++++++++++++++++++++++- 3 files changed, 88 insertions(+), 7 deletions(-) diff --git a/src/auth/authentication.js b/src/auth/authentication.js index 21ba26a..a540751 100644 --- a/src/auth/authentication.js +++ b/src/auth/authentication.js @@ -1,4 +1,5 @@ const status = require("../util/statuses"); +const session = require("express-session"); const bcrypt = require('bcrypt'); const joi = require("joi"); const salt = 12; diff --git a/src/router/user.js b/src/router/user.js index 9948402..1fdc6ff 100644 --- a/src/router/user.js +++ b/src/router/user.js @@ -1,5 +1,6 @@ const status = require("../util/statuses"); const ObjectId = require('mongodb').ObjectId; +const session = require("express-session"); const bcrypt = require("bcrypt"); const joi = require("joi"); const salt = 12; @@ -411,14 +412,14 @@ module.exports = (middleware, users, plans, assets) => { { "_id": id } ).then((result) => { if (result.deletedCount === 0) { - console.log(`Asset not found: ${req.body.id}`); - req.session.errMessage = "Unable to delete asset"; + console.error(`Asset not found: ${req.body.id}`); + req.session.errMessage = "Unable to delete asset. Please try again."; return res.status(status.NotFound).redirect("/assets"); } if (!result.acknowledged) { - console.error("Error updating asset: ", err); - req.session.errMessage = "An error occurred while saving your information. Please try again."; + console.error("Error deleting asset: ", err); + req.session.errMessage = "An error occurred while deleting an asset. Please try again."; return res.status(status.InternalServerError).redirect("/assets"); } @@ -426,11 +427,39 @@ module.exports = (middleware, users, plans, assets) => { return res.status(status.Ok).redirect("/assets"); }).catch((err) => { - console.error("Error updating asset: ", err); - req.session.errMessage = "An error occurred while saving your information. Please try again."; + console.error("Error deleting asset: ", err); + req.session.errMessage = "An error occurred while deleting an asset. Please try again."; return res.status(status.InternalServerError).redirect("/assets"); }); }); + router.post("/deleteUser", (req, res) => { + const id = new ObjectId(req.body.id); + + users.deleteOne( + { "_id": id }, + ).then((result) => { + if (result.deletedCount === 0) { + console.error(`User not found: ${req.body.id}`); + req.session.errMessage = "Unabled to delete account. Please try again."; + return res.status(status.NotFound).redirect("/profile"); + } + + if (!result.acknowledged) { + console.error("Error deleting user: ", err); + req.session.errMessage = "An error occured while deleting your account. Please try again."; + return res.status(status.InternalServerError).redirect("/profile"); + } + + // Direct to logout to destroy session + req.session.destroy(); + return res.status(status.Ok).redirect("/signup"); + }).catch((err) => { + console.error("Error deleting user: ", err); + req.session.errMessage = "An error occured while deleting your account. Please try again."; + return res.status(status.InternalServerError).redirect("/profile"); + }); + }); + return router; }; diff --git a/src/views/profile.ejs b/src/views/profile.ejs index 34f0bc2..b1a45f3 100644 --- a/src/views/profile.ejs +++ b/src/views/profile.ejs @@ -2,6 +2,46 @@ <%- include("./partials/header") %>
+ + +
+ +
+
+ +
+ +

Are you sure you want to delete you account? This process cannot be undone.

+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+

Welcome <%= user.name %>

<% if (errMessage != "") { %> @@ -32,7 +72,18 @@ -
- @@ -72,7 +71,6 @@ - @@ -100,7 +98,6 @@ - @@ -279,7 +276,7 @@ - + <% if (asset.type != "stock") { %>