From 93640b6ec08bb25e24841b9084e954d7c6521611 Mon Sep 17 00:00:00 2001 From: Bobby Date: Fri, 3 Jun 2022 17:22:43 +0530 Subject: update account details --- package-lock.json | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + routes/account.routes.js | 41 +++++++++++++++++++++++++++++++++- views/account.ejs | 16 ++++++++++---- 4 files changed, 110 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7379cf0..ea8d92f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "express": "^4.18.1", "express-session": "^1.17.3", "jsonwebtoken": "^8.5.1", + "md5": "^2.3.0", "mysql2": "^2.3.3", "node-fetch": "^3.2.5" }, @@ -333,6 +334,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -497,6 +506,14 @@ "node": ">= 0.10" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -1080,6 +1097,11 @@ "node": ">=8" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -1367,6 +1389,16 @@ "semver": "bin/semver.js" } }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -2595,6 +2627,11 @@ "supports-color": "^7.1.0" } }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2717,6 +2754,11 @@ "vary": "^1" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -3160,6 +3202,11 @@ "binary-extensions": "^2.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -3390,6 +3437,16 @@ } } }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", diff --git a/package.json b/package.json index 625c1555..2ac6944c 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "express": "^4.18.1", "express-session": "^1.17.3", "jsonwebtoken": "^8.5.1", + "md5": "^2.3.0", "mysql2": "^2.3.3", "node-fetch": "^3.2.5" }, diff --git a/routes/account.routes.js b/routes/account.routes.js index 7b5660b4..8a6a0b21 100644 --- a/routes/account.routes.js +++ b/routes/account.routes.js @@ -3,6 +3,7 @@ const { renderRoute } = require("../functions/render"); const mysql = require("mysql2"); const jwt = require("jsonwebtoken"); const connectionString = process.env.DATABASE_URL; +const md5 = require("md5"); router.get('/', (req, res) => { const username = jwt.decode(req.cookies.token).username; @@ -18,7 +19,10 @@ router.get('/', (req, res) => { if (results.length > 0) { const user = results[0]; renderRoute(req, res, 'account', 'My Account', true, { - user: user + user: { + ...user, + avatar: md5(user.email || '') + } }); } else { renderRoute(req, res, 'account', 'My Account', true, { @@ -30,5 +34,40 @@ router.get('/', (req, res) => { connection.end(); }); +router.post('/updateAccount', (req, res) => { + jwt.verify(req.cookies.token, process.env.AUTHORIZATION_STRING, (err, decoded) => { + if (err) { + renderRoute(req, res, 'error', 'Error', false) + } else { + const username = decoded.username; + const firstname = req.body.firstname; + const lastname = req.body.lastname; + const email = req.body.email; + const location = req.body.location; + const bio = req.body.bio; + const public = req.body.isPublic; + const connection = mysql.createPool(connectionString); + connection.getConnection((err, connection) => { + if (err) { + renderRoute(req, res, 'error', 'Error', false, { + error: err.message + }); + } else { + const sql = "UPDATE Profiles SET firstname = ?, lastname = ?, email = ?, location = ?, bio = ?, public = ? WHERE username = ?"; + connection.query(sql, [firstname, lastname, email, location, bio, public, username], (err, results, fields) => { + if (err) { + req.flash('updateaccerror', err.message); + res.redirect(req.get('referer')); + } else { + req.flash('updateaccsuccess', 'Account updated successfully'); + res.redirect(req.get('referer')); + } + }); + } + }); + } + }); +}); + module.exports = router; diff --git a/views/account.ejs b/views/account.ejs index f3bc3359..8fa8154c 100644 --- a/views/account.ejs +++ b/views/account.ejs @@ -41,8 +41,10 @@
-

Account URL:

-
+ <% if (user.public == 1) { %> +

Account URL:

+ <% } %> +
Account Details @@ -57,10 +59,16 @@ + <% if (locals.messages.updateaccsuccess) { %> +

<%= messages.updateaccsuccess %>

+ <% } %> + <% if (locals.messages.updateaccerror) { %> +

<%= messages.updateaccerror %>

+ <% } %>
-- cgit v1.2.3