aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-06-25 18:27:00 +0530
committerBobby <[email protected]>2022-06-25 18:27:00 +0530
commit3ee390500beb3495ca25fe67a357e2ae38475569 (patch)
treeaba3f3900cd936883a70e235fe323abb1e54dda1
parent806e6d2d78ef90f48727b86870bc75077b2474fe (diff)
downloadthatcomputerscientist-3ee390500beb3495ca25fe67a357e2ae38475569.tar.xz
thatcomputerscientist-3ee390500beb3495ca25fe67a357e2ae38475569.zip
setup dynamic subdomains and organize error pages
-rw-r--r--package-lock.json13
-rw-r--r--package.json3
-rw-r--r--routes/account.routes.js12
-rw-r--r--routes/auth.routes.js6
-rw-r--r--routes/basic.routes.js6
-rw-r--r--routes/index.js6
-rw-r--r--routes/profile.routes.js7
-rw-r--r--server.js7
-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;
diff --git a/server.js b/server.js
index dfc25a91..d0166128 100644
--- a/server.js
+++ b/server.js
@@ -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>