diff options
| author | Bobby <[email protected]> | 2022-06-25 17:11:20 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2022-06-25 17:11:20 +0530 |
| commit | a908904bf66d7c17f6d37671e0e8fd2e84c72072 (patch) | |
| tree | 08875521f1f9eeebd02789035a25f51ce96b39de | |
| parent | 24e055fdca067965ab45d6b916597e840ab849cd (diff) | |
| download | thatcomputerscientist-a908904bf66d7c17f6d37671e0e8fd2e84c72072.tar.xz thatcomputerscientist-a908904bf66d7c17f6d37671e0e8fd2e84c72072.zip | |
change email from account
| -rw-r--r-- | public/css/main.css | 10 | ||||
| -rw-r--r-- | routes/auth.routes.js | 4 | ||||
| -rw-r--r-- | routes/basic.routes.js | 50 |
3 files changed, 60 insertions, 4 deletions
diff --git a/public/css/main.css b/public/css/main.css index e83a2709..59705e9a 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -120,6 +120,16 @@ nav > ul > li { overflow-y: auto; } +.errorbox { + background-color: #ffd4bd; + padding: 20px; + border: 1px solid #191919; +} + +.errorbox > h1 { + margin-top: 0; +} + /* Optimize for phones */ @media only screen and (max-width: 480px) { body { diff --git a/routes/auth.routes.js b/routes/auth.routes.js index e8de4ed9..3c11b6a6 100644 --- a/routes/auth.routes.js +++ b/routes/auth.routes.js @@ -22,8 +22,8 @@ router.post("/login", (req, res) => { const sql = "SELECT * FROM Users WHERE username = ?"; connection.query(sql, [username], (err, results, fields) => { if (err) { - res.status(500).render("error", { - error: err, + renderRoute(req, res, "error", "Error", false, { + error: err.message, }); } else { if (results.length > 0) { diff --git a/routes/basic.routes.js b/routes/basic.routes.js index 40b982ae..baacb605 100644 --- a/routes/basic.routes.js +++ b/routes/basic.routes.js @@ -1,8 +1,54 @@ const router = require("express").Router(); -const { renderRoute } = require('../functions/render'); +const { renderRoute } = require("../functions/render"); +const mysql = require("mysql2"); +const jwt = require("jsonwebtoken"); + +require("dotenv").config(); +const validationString = process.env.AUTHORIZATION_STRING; +const connectionURL = process.env.DATABASE_URL; router.get("/", (req, res) => { - renderRoute(req, res, 'index', 'Home'); + renderRoute(req, res, "index", "Home"); +}); + +router.get("/verifyEmail", (req, res) => { + jwt.verify(req.cookies.token, validationString, (err, decoded) => { + if (err) { + renderRoute(req, res, "index", "Home"); + } else { + const token = req.query.token; + jwt.verify(token, validationString, (err, decoded) => { + if (err) { + if (err.expiredAt) { + renderRoute(req, res, "error", "Token Expired Error", false, { + error: `Your token has expired at ${err.expiredAt}. Please request an email verification again from the account page.`, + }); + } else { + renderRoute(req, res, "error", "Token Error", false, { + error: err, + }); + } + } else { + const username = decoded.username; + const email = decoded.email; + const connection = mysql.createConnection(connectionURL); + connection.connect(); + const sql = "UPDATE Profiles SET email = ? WHERE username = ?"; + connection.query(sql, [email, username], (err, results, fields) => { + if (err) { + renderRoute(req, res, "error", "Error", false, { + error: err, + }); + } else { + // go to the /account route + res.redirect("/account"); + } + }); + connection.end(); + } + }); + } + }); }); module.exports = router; |
