diff options
| author | Bobby <[email protected]> | 2022-06-25 18:27:00 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2022-06-25 18:27:00 +0530 |
| commit | 3ee390500beb3495ca25fe67a357e2ae38475569 (patch) | |
| tree | aba3f3900cd936883a70e235fe323abb1e54dda1 | |
| parent | 806e6d2d78ef90f48727b86870bc75077b2474fe (diff) | |
| download | thatcomputerscientist-3ee390500beb3495ca25fe67a357e2ae38475569.tar.xz thatcomputerscientist-3ee390500beb3495ca25fe67a357e2ae38475569.zip | |
setup dynamic subdomains and organize error pages
| -rw-r--r-- | package-lock.json | 13 | ||||
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | routes/account.routes.js | 12 | ||||
| -rw-r--r-- | routes/auth.routes.js | 6 | ||||
| -rw-r--r-- | routes/basic.routes.js | 6 | ||||
| -rw-r--r-- | routes/index.js | 6 | ||||
| -rw-r--r-- | routes/profile.routes.js | 7 | ||||
| -rw-r--r-- | server.js | 7 | ||||
| -rw-r--r-- | views/errors/page_error.ejs (renamed from views/error.ejs) | 2 |
9 files changed, 46 insertions, 16 deletions
diff --git a/package-lock.json b/package-lock.json index 41bf5f09..30279544 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,8 @@ "node-cron": "^3.0.1", "node-fetch": "^3.2.5", "nodemailer": "^6.7.5", - "uuid": "^8.3.2" + "uuid": "^8.3.2", + "wildcard-subdomains": "^1.1.0" }, "devDependencies": { "nodemon": "^2.0.16" @@ -2375,6 +2376,11 @@ "node": ">=8" } }, + "node_modules/wildcard-subdomains": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wildcard-subdomains/-/wildcard-subdomains-1.1.0.tgz", + "integrity": "sha512-eeP601gG7lYvZCN9WudwvjIsV2ARQ/ryHz21QruJeZeSLU+ndbNVZD6qoPtnf+DObjfIJOlINiY21R6ffdMDtA==" + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -4188,6 +4194,11 @@ "string-width": "^4.0.0" } }, + "wildcard-subdomains": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wildcard-subdomains/-/wildcard-subdomains-1.1.0.tgz", + "integrity": "sha512-eeP601gG7lYvZCN9WudwvjIsV2ARQ/ryHz21QruJeZeSLU+ndbNVZD6qoPtnf+DObjfIJOlINiY21R6ffdMDtA==" + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 73edc846..d9a9bf9b 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,8 @@ "node-cron": "^3.0.1", "node-fetch": "^3.2.5", "nodemailer": "^6.7.5", - "uuid": "^8.3.2" + "uuid": "^8.3.2", + "wildcard-subdomains": "^1.1.0" }, "devDependencies": { "nodemon": "^2.0.16" diff --git a/routes/account.routes.js b/routes/account.routes.js index 5e2b97d9..967a093c 100644 --- a/routes/account.routes.js +++ b/routes/account.routes.js @@ -21,7 +21,7 @@ router.get("/", (req, res) => { const sql = "SELECT * FROM Profiles WHERE username = ?"; connection.query(sql, [username], (err, results, fields) => { if (err) { - res.status(500).render("error", { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err, }); } else { @@ -58,7 +58,7 @@ router.post("/sendVerificationEmail", (req, res) => { process.env.AUTHORIZATION_STRING, (err, decoded) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err, }); } else { @@ -76,7 +76,7 @@ router.post("/sendVerificationEmail", (req, res) => { const sql = "SELECT * FROM Profiles WHERE username = ?"; connection.query(sql, [username], (err, results, fields) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err.message, }); } else { @@ -142,7 +142,7 @@ router.post("/sendVerificationEmail", (req, res) => { }); } } else { - res.status(500).render("error", { + renderRoute(req, res, "errors/page_error", "Error", false, { error: "User not found", }); } @@ -161,7 +161,7 @@ router.post("/updateAccount", (req, res) => { process.env.AUTHORIZATION_STRING, (err, decoded) => { if (err) { - renderRoute(req, res, "error", "Error", false); + renderRoute(req, res, "errors/page_error", "Error", false); } else { const username = decoded.username; const firstname = req.body.firstname; @@ -174,7 +174,7 @@ router.post("/updateAccount", (req, res) => { const connection = mysql.createPool(connectionString); connection.getConnection((err, connection) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err.message, }); } else { diff --git a/routes/auth.routes.js b/routes/auth.routes.js index 3c11b6a6..2b218752 100644 --- a/routes/auth.routes.js +++ b/routes/auth.routes.js @@ -22,7 +22,7 @@ router.post("/login", (req, res) => { const sql = "SELECT * FROM Users WHERE username = ?"; connection.query(sql, [username], (err, results, fields) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err.message, }); } else { @@ -72,14 +72,14 @@ router.post("/changePassword", (req, res) => { const connection = mysql.createPool(connectionURL); connection.getConnection((err, connection) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err.message, }); } else { const sql = "SELECT * FROM Users WHERE username = ?"; connection.query(sql, [username], (err, results, fields) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err.message, }); } else { diff --git a/routes/basic.routes.js b/routes/basic.routes.js index baacb605..24e071f8 100644 --- a/routes/basic.routes.js +++ b/routes/basic.routes.js @@ -20,11 +20,11 @@ router.get("/verifyEmail", (req, res) => { jwt.verify(token, validationString, (err, decoded) => { if (err) { if (err.expiredAt) { - renderRoute(req, res, "error", "Token Expired Error", false, { + renderRoute(req, res, "errors/page_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, { + renderRoute(req, res, "errors/page_error", "Token Error", false, { error: err, }); } @@ -36,7 +36,7 @@ router.get("/verifyEmail", (req, res) => { const sql = "UPDATE Profiles SET email = ? WHERE username = ?"; connection.query(sql, [email, username], (err, results, fields) => { if (err) { - renderRoute(req, res, "error", "Error", false, { + renderRoute(req, res, "errors/page_error", "Error", false, { error: err, }); } else { diff --git a/routes/index.js b/routes/index.js index 61f17a7c..24885c77 100644 --- a/routes/index.js +++ b/routes/index.js @@ -3,10 +3,16 @@ const home = require('./basic.routes'); const auth = require('./auth.routes'); const account = require('./account.routes'); const api = require('./api'); +const profile = require('./profile.routes'); +const { renderRoute } = require('../functions/render'); router.use('/', home); router.use('/auth', auth); router.use('/api', api); router.use('/account', account); +router.use('/profile', profile); +router.get('*', (req, res) => { + renderRoute(req, res, "404", "Page Not Found"); +}); module.exports = router; diff --git a/routes/profile.routes.js b/routes/profile.routes.js new file mode 100644 index 00000000..6159bcf1 --- /dev/null +++ b/routes/profile.routes.js @@ -0,0 +1,7 @@ +const router = require("express").Router(); + +router.get('/:username', (req, res) => { + res.send(`Hello ${req.params.username}`); +}); + +module.exports = router; @@ -7,8 +7,8 @@ const mysql = require("mysql2"); const app = express(); const port = process.env.PORT || 3000; const connectionURL = process.env.DATABASE_URL; -const validationString = process.env.AUTHORIZATION_STRING; const cron = require("node-cron"); +const subdomains = require('wildcard-subdomains'); require("dotenv").config(); @@ -25,6 +25,11 @@ app.use( ); app.use(flash()); +app.use(subdomains({ + namespace: 'profile', + whitelist: ['www'], +})) + // Set Template Engine app.set("view engine", "ejs"); diff --git a/views/error.ejs b/views/errors/page_error.ejs index 16a9f991..baa97f98 100644 --- a/views/error.ejs +++ b/views/errors/page_error.ejs @@ -21,6 +21,6 @@ </div> </div> - <%- include('partials/footer.ejs') %> + <%- include('../partials/footer.ejs') %> </body> </html> |
