From b2ffae680c30b0a319d97b968e92ab654fcc4dc6 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Thu, 10 Jun 2021 21:49:46 +1000 Subject: [PATCH 01/13] this be the start of the new api stuff --- config/auth.js | 3 +- helpers/functions.js | 16 +++--- index.js | 122 +++++++++++++++++++++++-------------------- 3 files changed, 75 insertions(+), 66 deletions(-) diff --git a/config/auth.js b/config/auth.js index b0b2565..594dcc9 100644 --- a/config/auth.js +++ b/config/auth.js @@ -3,7 +3,8 @@ module.exports = { if (req.session.user != undefined) { return next(); } - req.flash("error_msg", "please login to view this resource"); + req.session.errors = []; + req.session.errors.push({ msg: "please login to view this resource" }); res.redirect("/login"); }, }; diff --git a/helpers/functions.js b/helpers/functions.js index bbadebc..106228d 100644 --- a/helpers/functions.js +++ b/helpers/functions.js @@ -3,13 +3,15 @@ const got = require("got"); async function postUser(name, password) { console.log(process.env.BANKAPIURL); try { - const { body } = await got.post(process.env.BANKAPIURL + "BankF/user", { - json: { - name: name, - init_pass: password, - }, - responseType: "json", - }); + const { body } = await got.get( + process.env.BANKAPIURL + "BankF/user/" + name, + { + headers: { + Password: password, + }, + responseType: "json", + } + ); return body; } catch (err) { console.log(err); diff --git a/index.js b/index.js index 0860ef9..70a73d5 100644 --- a/index.js +++ b/index.js @@ -194,11 +194,11 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { let logsent; console.log("start " + Date.now()); try { - logsent = await got.post( + logsent = await got( process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", { - json: { - attempt: req.session.password, + headers: { + Password: req.session.password, }, responseType: "json", } @@ -206,14 +206,19 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } catch (e) { console.log(e); } + console.log(logsent.body); console.log("query finished " + Date.now()); - logsent = logsent.body.value; + logsent = logsent.body; + logsent = logsent.value; let logrec = logsent; let graphlog = logsent; - graphlog = graphlog.reverse(); + if (graphlog != null) { + graphlog = graphlog.reverse(); + } + console.log(graphlog); let graphdata = ""; let currentbal = balance.value; - if (graphlog) { + if (graphlog != null) { for (i = graphlog.length - 1; i > -1; i--) { if (graphlog[i].from == req.session.user) { currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount); @@ -223,14 +228,15 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]"; } } + graphdata = + ", [" + parseInt(graphlog.length) + "," + balance.value + "]" + graphdata; + console.log(balance); + graphdata = '["transaction", "balance"]' + graphdata; + console.log(JSON.stringify(graphdata)); } else { graphlog = undefined; } - graphdata = - ", [" + parseInt(graphlog.length) + "," + balance.value + "]" + graphdata; - console.log(balance); - graphdata = '["transaction", "balance"]' + graphdata; - console.log(JSON.stringify(graphdata)); + if (logsent == 1 || logsent == -1 || logsent == null) { logsent = undefined; } else { @@ -251,13 +257,19 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { logsent[i].time = new Date(logsent[i].time); } } + if (logrec != null) { + logrec.reverse(); + } + if (logsent != null) { + logsent.reverse(); + } let maxgraph = balance + 1000; console.log("begin render " + Date.now()); res.render("bankf", { maxgraph: maxgraph, graphdata: graphdata, - logrec: logrec.reverse(), - logsent: logsent.reverse(), + logrec: logrec, + logsent: logsent, user: req.session.user, balance: balance.value, user: req.session.user, @@ -341,61 +353,55 @@ app.post("/login", async function (req, res) { if (req.session.user) { res.redirect("/"); } + req.session.regenerate(function (err) {}); let { name, password } = req.body; let adminTest; - let errors = []; + req.session.errors = []; + let verified; try { - adminTest = await got.post(process.env.BANKAPIURL + "BankF/admin/vpass", { - json: { - attempt: password, - }, - responseType: "json", - }); - } catch (err) { - console.log(err); - } - req.session.password = password; - if (adminTest.body.value == undefined) { - res.redirect("/"); - } else { - req.session.admin = adminTest.body.value; - req.session.adminp = password; - let verified; - try { - verified = await got.post(process.env.BANKAPIURL + "BankF/vpass", { - json: { - name: name, - attempt: password, + verified = await got( + process.env.BANKAPIURL + "BankF/" + name + "/pass/verify", + { + headers: { + Password: password, }, responseType: "json", - }); - } catch (err) { - console.log(err); - } finally { - console.log(verified.body.value); - if (verified.body.value == 0) { - errors.push({ msg: "Password wrong" }); - res.render("login", { - errors: errors, - marketplace: process.env.MARKETPLACE, - random: papy(), + } + ); + } catch (err) { + console.log(err); + } finally { + if (verified.body.value == -2) { + req.session.errors.push({ msg: "Password wrong" }); + res.redirect("/login"); + } else if (verified.body.value == 1) { + console.log(name); + req.session.user = name; + req.session.password = password; + res.redirect("/BankF"); + } else if (verified.body.value == -1) { + req.session.errors.push({ msg: "User not found" }); + res.redirect("/login"); + } else if (verified.body.value == 0) { + console.log(verified.body.value + " Error on verified"); + try { + adminTest = await got(process.env.BANKAPIURL + "BankF/admin/verify", { + headers: { + Password: password, + }, + responseType: "json", }); - } else if (verified.body.value == 1) { - req.session.user = name; - req.session.password = password; + } catch (err) { + console.log(err); + } + console.log(adminTest.body); + if (adminTest.body) { + req.session.admin = adminTest.body.value; + req.session.adminp = password; res.redirect("/BankF"); - } else { - errors.push({ msg: "User not found" }); - res.render("login", { - errors: errors, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); } } } - - //res.redirect('/login') }); let admin = require("./routes/admin"); From 0632ce5d3013197f52c2a2ffa69b5bd940da7817 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Fri, 11 Jun 2021 07:30:24 +1000 Subject: [PATCH 02/13] commiting changes before work --- helpers/functions.js | 2 +- index.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/helpers/functions.js b/helpers/functions.js index 106228d..d72ed7e 100644 --- a/helpers/functions.js +++ b/helpers/functions.js @@ -3,7 +3,7 @@ const got = require("got"); async function postUser(name, password) { console.log(process.env.BANKAPIURL); try { - const { body } = await got.get( + const { body } = await got.post( process.env.BANKAPIURL + "BankF/user/" + name, { headers: { diff --git a/index.js b/index.js index 70a73d5..b2abfb6 100644 --- a/index.js +++ b/index.js @@ -380,6 +380,7 @@ app.post("/login", async function (req, res) { req.session.password = password; res.redirect("/BankF"); } else if (verified.body.value == -1) { + req.session.errors = []; req.session.errors.push({ msg: "User not found" }); res.redirect("/login"); } else if (verified.body.value == 0) { From 2610c74cd400cdb5c0d5bafbd7b373c3bae03b62 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Fri, 11 Jun 2021 09:36:21 +1000 Subject: [PATCH 03/13] getting rid of garbage --- index.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/index.js b/index.js index ffee0b9..277f612 100644 --- a/index.js +++ b/index.js @@ -215,10 +215,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { if (graphlog != null) { graphlog = graphlog.reverse(); } -<<<<<<< HEAD -======= console.log(graphlog); ->>>>>>> 0632ce5d3013197f52c2a2ffa69b5bd940da7817 let graphdata = ""; let currentbal = balance.value; if (graphlog != null) { @@ -239,19 +236,13 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } else { graphlog = undefined; } -<<<<<<< HEAD if (graphdata != "") { graphdata = ", [" + parseInt(graphlog.length) + "," + balance.value + "]" + graphdata; graphdata = '["transaction", "balance"]' + graphdata; } - console.log(balance); - console.log(JSON.stringify(graphdata)); -======= - ->>>>>>> 0632ce5d3013197f52c2a2ffa69b5bd940da7817 if (logsent == 1 || logsent == -1 || logsent == null) { logsent = undefined; } else { From 7bf74a55b187924b002b699109979c022d35bd70 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Mon, 14 Jun 2021 17:15:08 +1000 Subject: [PATCH 04/13] lots of improvements --- helpers/functions.js | 15 ++--- index.js | 148 ++++++++++++++++------------------------- package-lock.json | 81 +++++++++++++++++++++-- package.json | 1 + routes/admin.js | 152 ++++++++++++++----------------------------- routes/settings.js | 32 ++++----- 6 files changed, 199 insertions(+), 230 deletions(-) diff --git a/helpers/functions.js b/helpers/functions.js index d72ed7e..c85bffe 100644 --- a/helpers/functions.js +++ b/helpers/functions.js @@ -1,18 +1,11 @@ -const got = require("got"); +const { CCashClient } = require("ccash-client-js"); + +const client = new CCashClient(process.env.BANKAPIURL); async function postUser(name, password) { console.log(process.env.BANKAPIURL); try { - const { body } = await got.post( - process.env.BANKAPIURL + "BankF/user/" + name, - { - headers: { - Password: password, - }, - responseType: "json", - } - ); - return body; + return await client.addUser(name, password); } catch (err) { console.log(err); } diff --git a/index.js b/index.js index 277f612..4287410 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,7 @@ const bodyParser = require("body-parser"); const expressValidator = require("express-validator"); const flash = require("connect-flash"); const session = require("express-session"); -const { postUser } = require("./helpers/functions.js"); + const { ensureAuthenticated } = require("./config/auth.js"); const app = express(); const MemoryStore = require("memorystore")(session); @@ -15,8 +15,10 @@ const dotenv = require("dotenv"); const fs = require("fs"); let Log = require("./schemas/log.js"); const mongoose = require("mongoose"); +const { CCashClient } = require("ccash-client-js"); dotenv.config(); - +const { postUser } = require("./helpers/functions.js"); +const client = new CCashClient(process.env.BANKAPIURL); app.set("views", path.join(__dirname, "views")); app.set("view engine", "pug"); app.use(flash()); @@ -147,13 +149,13 @@ app.get("/", async function (req, res) { } else { let checkalive; try { - checkalive = await got(process.env.BANKAPIURL + "BankF/help"); + checkalive = await client.help(); } catch (err) { console.log(err); } let alive = false; try { - if (checkalive.body) { + if (checkalive) { alive = true; } } catch (err) { @@ -184,71 +186,56 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } let balance = 0; try { - balance = await got( - process.env.BANKAPIURL + "BankF/" + req.session.user + "/bal" - ); - balance = JSON.parse(balance.body); + balance = await client.balance(req.session.user); } catch (err) { console.log(err); } let logsent; console.log("start " + Date.now()); try { - logsent = await got( - process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", - { - headers: { - Password: req.session.password, - }, - responseType: "json", - } - ); + const { user, password } = req.session; + logsent = await client.log(user, password); } catch (e) { console.log(e); } - console.log(logsent.body); + console.log(logsent); console.log("query finished " + Date.now()); - logsent = logsent.body; - logsent = logsent.value; let logrec = logsent; let graphlog = logsent; - if (graphlog != null) { + console.log(graphlog); + if (graphlog != 0 && graphlog != null) { graphlog = graphlog.reverse(); } - console.log(graphlog); let graphdata = ""; - let currentbal = balance.value; - if (graphlog != null) { - for (i = graphlog.length - 1; i > -1; i--) { + let currentbal = balance; + if (graphlog != 0 && graphlog != null) { + graphdata = + graphdata + ", [" + parseInt(graphlog.length) + "," + balance + "]"; + for (i = 0; i < graphlog.length; i++) { if (graphlog[i].from == req.session.user) { - currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount); + currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount); graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]"; } else { - currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount); + currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount); graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]"; } } - graphdata = - ", [" + parseInt(graphlog.length) + "," + balance.value + "]" + graphdata; console.log(balance); - graphdata = '["transaction", "balance"]' + graphdata; console.log(JSON.stringify(graphdata)); } else { graphlog = undefined; } if (graphdata != "") { - graphdata = - ", [" + parseInt(graphlog.length) + "," + balance.value + "]" + graphdata; graphdata = '["transaction", "balance"]' + graphdata; } console.log(balance); console.log(JSON.stringify(graphdata)); - if (logsent == 1 || logsent == -1 || logsent == null) { + if (logsent == null) { logsent = undefined; } else { logsent = await logsent.filter(({ from }) => from === req.session.user); } - if (logrec === 1 || logrec === -1 || logrec === null) { + if (logrec == null) { logrec = undefined; } else { logrec = await logrec.filter(({ to }) => to === req.session.user); @@ -277,7 +264,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { logrec: logrec, logsent: logsent, user: req.session.user, - balance: balance.value, + balance: balance, user: req.session.user, admin: req.session.admin, sucesses: successes, @@ -290,10 +277,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { app.post("/sendfunds", async function (req, res) { let balance = 0; try { - balance = await got( - process.env.BANKAPIURL + "BankF/" + req.session.user + "/bal" - ); - balance = JSON.parse(balance.body); + balance = await client.balance(req.session.user); } catch (err) { console.log(err); } @@ -302,17 +286,9 @@ app.post("/sendfunds", async function (req, res) { let successes = []; req.session.errors = []; let result = {}; - result = await got.post(process.env.BANKAPIURL + "BankF/sendfunds", { - json: { - a_name: a_name, - b_name: name, - amount: parseInt(amount), - attempt: senderpass, - }, - responseType: "json", - }); + result = await client.sendFunds(a_name, senderpass, name, parseInt(amount)); - if (result.body.value == true || result.body.value) { + if (result == true || result) { req.session.success = true; //post details res.redirect("/BankF"); @@ -324,12 +300,16 @@ app.post("/sendfunds", async function (req, res) { app.post("/register", async function (req, res) { var { name, password, password2 } = req.body; + let checkuser; + try { + checkuser = await client.contains(name); + } catch (e) { + console.log(e); + } - let checkuser = await got(process.env.BANKAPIURL + "BankF/contains/" + name); - checkuser = JSON.parse(checkuser.body).value; req.session.errors = []; req.session.successes = []; - if (checkuser == false) { + if (!checkuser) { if (!name || !password || !password2) { req.session.errors.push({ msg: "please fill in all fields" }); } @@ -360,51 +340,33 @@ app.post("/login", async function (req, res) { res.redirect("/"); } req.session.regenerate(function (err) {}); - let { name, password } = req.body; + const { name, password } = req.body; let adminTest; - req.session.errors = []; - let verified; try { - verified = await got( - process.env.BANKAPIURL + "BankF/" + name + "/pass/verify", - { - headers: { - Password: password, - }, - responseType: "json", - } - ); + adminTest = await client.adminVerifyPass(password); } catch (err) { console.log(err); - } finally { - if (verified.body.value == -2) { - req.session.errors.push({ msg: "Password wrong" }); - res.redirect("/login"); - } else if (verified.body.value == 1) { - console.log(name); - req.session.user = name; - req.session.password = password; - res.redirect("/BankF"); - } else if (verified.body.value == -1) { - req.session.errors = []; - req.session.errors.push({ msg: "User not found" }); - res.redirect("/login"); - } else if (verified.body.value == 0) { - console.log(verified.body.value + " Error on verified"); - try { - adminTest = await got(process.env.BANKAPIURL + "BankF/admin/verify", { - headers: { - Password: password, - }, - responseType: "json", - }); - } catch (err) { - console.log(err); - } - console.log(adminTest.body); - if (adminTest.body) { - req.session.admin = adminTest.body.value; - req.session.adminp = password; + } + if (adminTest) { + req.session.admin = adminTest; + req.session.adminp = password; + req.session.user = name; + req.session.password = password; + res.redirect("/BankF"); + } else { + let verified; + try { + verified = await client.verifyPassword(name, password); + } catch (err) { + console.log(err); + } finally { + if (!verified) { + req.session.errors = []; + req.session.errors.push({ msg: "Password wrong" }); + res.redirect("/login"); + } else { + req.session.user = name; + req.session.password = password; res.redirect("/BankF"); } } diff --git a/package-lock.json b/package-lock.json index 3301176..75d4abb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "ccash-client-js": "^1.6.0", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -167,6 +168,14 @@ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, "node_modules/babel-walk": { "version": "3.0.0-canary-5", "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", @@ -265,6 +274,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ccash-client-js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.0.tgz", + "integrity": "sha512-uNLrecsFLS4S3EIzeShnOrcIPYub36K1vG/dq13EL8V76UWeaWB3iWZEO8l2h6VQTXrfSa9PmM/+rAb3BQcahQ==", + "dependencies": { + "axios": "^0.21.1", + "class-transformer": "^0.4.0" + } + }, "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -273,6 +291,11 @@ "is-regex": "^1.0.3" } }, + "node_modules/class-transformer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", + "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -560,6 +583,25 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -1053,9 +1095,9 @@ } }, "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "engines": { "node": ">=8" } @@ -1755,6 +1797,14 @@ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, "babel-walk": { "version": "3.0.0-canary-5", "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", @@ -1832,6 +1882,15 @@ "get-intrinsic": "^1.0.2" } }, + "ccash-client-js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.0.tgz", + "integrity": "sha512-uNLrecsFLS4S3EIzeShnOrcIPYub36K1vG/dq13EL8V76UWeaWB3iWZEO8l2h6VQTXrfSa9PmM/+rAb3BQcahQ==", + "requires": { + "axios": "^0.21.1", + "class-transformer": "^0.4.0" + } + }, "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -1840,6 +1899,11 @@ "is-regex": "^1.0.3" } }, + "class-transformer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", + "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -2070,6 +2134,11 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -2426,9 +2495,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" }, "object-assign": { "version": "4.1.1", diff --git a/package.json b/package.json index 94bd68a..447c995 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "ccash-client-js": "^1.6.0", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/routes/admin.js b/routes/admin.js index 7033bc3..dfd81d6 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -12,6 +12,9 @@ const got = require("got"); const MemoryStore = require("memorystore")(session); const fs = require("fs"); const mongoose = require("mongoose"); +const { CCashClient } = require("ccash-client-js"); + +const client = new CCashClient(process.env.BANKAPIURL); console.log("Sen was here"); function mongo() { @@ -36,9 +39,14 @@ function mongo() { } router.get("/", checkAdmin, function (req, res) { + let successes = req.session.successes; + let errors = req.session.errors; + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, + errors: errors, + successes: successes, marketplace: process.env.MARKETPLACE, random: papy(), }); @@ -46,10 +54,9 @@ router.get("/", checkAdmin, function (req, res) { router.post("/user", checkAdmin, async function (req, res) { let { name, init_pass, init_bal, password2 } = req.body; - let contains = await got(process.env.BANKAPIURL + "BankF/contains/" + name); - contains = JSON.parse(contains.body).value; - let errors = []; - let successes = []; + let contains = await client.contains(name); + req.session.errors = []; + req.session.successes = []; if (contains == true) { errors.push({ msg: "User already exists" }); res.render("adminsettings", { @@ -57,165 +64,111 @@ router.post("/user", checkAdmin, async function (req, res) { }); } else { if (!name || !init_pass || !init_bal || !password2) { - errors.push({ msg: "please fill in all fields" }); + req.session.errors.push({ msg: "please fill in all fields" }); } //check if match if (init_pass !== password2) { - errors.push({ msg: "Passwords don't match" }); + req.session.errors.push({ msg: "Passwords don't match" }); } //check if password is more than 6 characters if (init_pass.length < 6) { - errors.push({ msg: "Password must be at least 6 characters" }); + req.session.errors.push({ + msg: "Password must be at least 6 characters", + }); } let post; let successes = []; try { - post = await got.post(process.env.BANKAPIURL + "BankF/admin/user", { - json: { - name: name, - attempt: req.session.adminp, - init_bal: parseInt(init_bal), - init_pass: init_pass, - }, - responseType: "json", - }); + post = await client.adminAddUser( + name, + req.session.adminp, + init_pass, + parseInt(init_bal) + ); } catch (err) { console.log(err); } - if (post.body.value == true) { + if (post) { successes.push({ msg: "Account Creation Successful" }); } } - res.render("adminsettings", { - user: req.session.user, - admin: req.session.admin, - successes: successes, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + res.redirect("/admin"); }); router.post("/baluser", checkAdmin, async function (req, res) { let { name } = req.body; let balance; - let successes = []; - let errors = []; + req.session.successes = []; + req.session.errors = []; try { - balance = await got(process.env.BANKAPIURL + "BankF/" + name + "/bal"); - balance = JSON.parse(balance.body); + balance = await client.balance(name); } catch (err) { console.log(err); } - if (balance.value == -1 || balance.value == undefined) { - errors.push({ msg: "User not found" }); + balance = parseInt(balance); + console.log(balance); + if (balance < 0) { + req.session.errors.push({ msg: "User not found" }); } else { - successes.push({ + req.session.successes.push({ msg: "User: " + name + " has " + balance.value + " monies", }); } - res.render("adminsettings", { - user: req.session.user, - admin: req.session.admin, - successes: successes, - errors: errors, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + res.redirect("/admin"); }); router.post("/bal", checkAdmin, async function (req, res) { let { name, amount } = req.body; let patch; - let successes = []; + req.session.successes = []; + req.session.errors = []; try { - patch = await got.patch( - process.env.BANKAPIURL + "BankF/admin/" + name + "/bal", - { - json: { - name: name, - attempt: req.session.adminp, - amount: parseInt(amount), - }, - responseType: "json", - } - ); + patch = await client.setBalance(name, req.session.adminp, parseInt(amount)); } catch (err) { console.log(err); } - if ((await patch.body.value) == true) { - successes.push({ msg: "Change Funds Successful" }); + if (patch) { + req.session.successes.push({ msg: "Change Funds Successful" }); } - res.render("adminsettings", { - user: req.session.user, - admin: req.session.admin, - successes: successes, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + res.redirect("/admin"); }); router.post("/userdelete", checkAdmin, async function (req, res) { let { name, attempt } = req.body; console.log(name); - let contains = await got(process.env.BANKAPIURL + "BankF/contains/" + name); - contains = JSON.parse(contains.body).value; + let contains = await client.contains(name); let deleteUser; let successes = []; let errors = []; if (attempt != req.session.adminp) { - errors.push({ msg: "Wrong Admin Password" }); + req.session.errors.push({ msg: "Wrong Admin Password" }); } console.log(contains); if (contains == true) { - deleteUser = got.delete(process.env.BANKAPIURL + "BankF/admin/user", { - json: { - name: name, - attempt: attempt, - }, - responseType: "json", - }); - successes.push({ msg: "User Deletion Successful" }); + deleteUser = client.adminDeleteUser(name, attempt); + req.session.successes.push({ msg: "User Deletion Successful" }); } else { - errors.push({ msg: "User Deletion Failed, User Not Found" }); + req.session.errors.push({ msg: "User Deletion Failed, User Not Found" }); } - res.render("adminsettings", { - user: req.session.user, - admin: req.session.admin, - successes: successes, - errors: errors, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + res.redirect("/admin"); }); router.post("/destroyallsessions", checkAdmin, async function (req, res) { let { attempt } = req.body; let adminTest; - let errors = []; + req.session.errors = []; try { - adminTest = await got.post(process.env.BANKAPIURL + "BankF/admin/vpass", { - json: { - attempt: attempt, - }, - responseType: "json", - }); + adminTest = await client.adminVerifyPass(attempt); } catch (err) { console.log(err); } - console.log(adminTest.body.value); if (adminTest) { req.sessionStore.clear(function (err) { console.log(err); }); res.redirect("/"); } else { - errors.push({ msg: "failed admin password check" }); - res.render("adminsettings", { - user: req.session.user, - admin: req.session.admin, - errors: errors, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + req.session.errors.push({ msg: "failed admin password check" }); + res.redirect("/admin"); } }); @@ -279,12 +232,7 @@ router.post("/mongodb", checkAdmin, async function (req, res) { router.post("/close", checkAdmin, async function (req, res) { let { attempt } = req.body; let close; - close = got.post(process.env.BANKAPIURL + "BankF/admin/close", { - json: { - attempt: attempt, - }, - responseType: "json", - }); + close = client.close(); res.redirect("../"); }); function papy() { diff --git a/routes/settings.js b/routes/settings.js index ed7e62f..c93590e 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -8,7 +8,9 @@ const flash = require("connect-flash"); const expressValidator = require("express-validator"); const session = require("express-session"); const { postUser } = require("../helpers/functions.js"); -const got = require("got"); +const { CCashClient } = require("ccash-client-js"); + +const client = new CCashClient(process.env.BANKAPIURL); router.get("/", ensureAuthenticated, function (req, res) { let successes = req.session.successes; @@ -27,7 +29,10 @@ router.get("/", ensureAuthenticated, function (req, res) { router.post("/pass", ensureAuthenticated, async function (req, res) { let { attempt, new_pass, password2 } = req.body; let patch; - if (!attempt || !new_pass || !password2) { + if (attempt == undefined) { + attempt = ""; + } + if (!new_pass || !password2) { req.session.errors.push({ msg: "please fill in all fields" }); } //check if match @@ -44,31 +49,22 @@ router.post("/pass", ensureAuthenticated, async function (req, res) { res.redirect("/settings"); } else { try { - patch = await got.patch(process.env.BANKAPIURL + "BankF/changepass", { - json: { - name: req.session.user, - attempt: attempt, - new_pass: new_pass, - }, - responseType: "json", - }); + patch = await client.changePassword(req.session.user, attempt, new_pass); } catch (err) { console.log(err); } - console.log(patch.body); - if (patch.body.value == 0) { + console.log(patch); + if (patch) { req.session.errors.push({ msg: "Password Wrong", }); res.redirect("/settings"); } else { req.session.regenerate(function (err) { - if (patch.body.value == 1) { - req.session.successes = []; - req.session.successes.push({ - msg: "Change Password Successful, Please Login Again", - }); - } + req.session.successes = []; + req.session.successes.push({ + msg: "Change Password Successful, Please Login Again", + }); res.redirect("/login"); }); } From 76b36d574044e4806acdaeb23c209dbe0fc2b3fe Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Mon, 14 Jun 2021 19:23:19 +1000 Subject: [PATCH 05/13] almost done, need twix to patch some things in api --- index.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index 4287410..35fc3e3 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,6 @@ const bodyParser = require("body-parser"); const expressValidator = require("express-validator"); const flash = require("connect-flash"); const session = require("express-session"); - const { ensureAuthenticated } = require("./config/auth.js"); const app = express(); const MemoryStore = require("memorystore")(session); @@ -19,6 +18,7 @@ const { CCashClient } = require("ccash-client-js"); dotenv.config(); const { postUser } = require("./helpers/functions.js"); const client = new CCashClient(process.env.BANKAPIURL); + app.set("views", path.join(__dirname, "views")); app.set("view engine", "pug"); app.use(flash()); @@ -190,6 +190,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } catch (err) { console.log(err); } + console.log(balance); let logsent; console.log("start " + Date.now()); try { @@ -198,36 +199,32 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } catch (e) { console.log(e); } - console.log(logsent); - console.log("query finished " + Date.now()); let logrec = logsent; let graphlog = logsent; - console.log(graphlog); - if (graphlog != 0 && graphlog != null) { + if (graphlog != null) { graphlog = graphlog.reverse(); } let graphdata = ""; let currentbal = balance; - if (graphlog != 0 && graphlog != null) { - graphdata = - graphdata + ", [" + parseInt(graphlog.length) + "," + balance + "]"; - for (i = 0; i < graphlog.length; i++) { + if (graphlog) { + for (i = graphlog.length - 1; i > -1; i--) { if (graphlog[i].from == req.session.user) { - currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount); + currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount); graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]"; } else { - currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount); + currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount); graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]"; } } - console.log(balance); - console.log(JSON.stringify(graphdata)); } else { graphlog = undefined; } if (graphdata != "") { + graphdata = + ", [" + parseInt(graphlog.length) + "," + balance + "]" + graphdata; graphdata = '["transaction", "balance"]' + graphdata; } + console.log(balance); console.log(JSON.stringify(graphdata)); if (logsent == null) { From df951c9136df064caa828ed23951e93982e2dea6 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Tue, 15 Jun 2021 17:28:35 +1000 Subject: [PATCH 06/13] basically done --- index.js | 39 +++++++++++++++++++-------------------- package-lock.json | 14 +++++++------- package.json | 2 +- routes/admin.js | 45 ++++++++++++++++++++++++++++----------------- 4 files changed, 55 insertions(+), 45 deletions(-) diff --git a/index.js b/index.js index 35fc3e3..effd1e9 100644 --- a/index.js +++ b/index.js @@ -172,10 +172,7 @@ app.get("/", async function (req, res) { } }); app.get("/BankF", ensureAuthenticated, async function (req, res) { - let successes = []; - if (req.session.sucess == true) { - successes.push({ msg: "Transfer successful" }); - } + let successes = req.session.successes; let errors = req.session.errors; req.session.errors = []; let admin; @@ -190,7 +187,6 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } catch (err) { console.log(err); } - console.log(balance); let logsent; console.log("start " + Date.now()); try { @@ -224,9 +220,6 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { ", [" + parseInt(graphlog.length) + "," + balance + "]" + graphdata; graphdata = '["transaction", "balance"]' + graphdata; } - - console.log(balance); - console.log(JSON.stringify(graphdata)); if (logsent == null) { logsent = undefined; } else { @@ -272,21 +265,27 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { }); app.post("/sendfunds", async function (req, res) { - let balance = 0; - try { - balance = await client.balance(req.session.user); - } catch (err) { - console.log(err); - } let { amount, name, senderpass } = req.body; - let a_name = req.session.user; - let successes = []; req.session.errors = []; - let result = {}; - result = await client.sendFunds(a_name, senderpass, name, parseInt(amount)); - + req.session.successes = []; + let a_name = req.session.user; + let result; + try { + result = await got.post( + `${process.env.BANKAPIURL}/${a_name}/send/${name}?amount=${amount}`, + { + headers: { + Password: senderpass, + }, + } + ); + //client.sendFunds(a_name, senderpass, name, amount); + } catch (e) { + console.log(e); + } + console.log(result); if (result == true || result) { - req.session.success = true; + req.session.successes.push({ msg: "Transfer successful" }); //post details res.redirect("/BankF"); } else { diff --git a/package-lock.json b/package-lock.json index 75d4abb..c7719ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "ccash-client-js": "^1.6.0", + "ccash-client-js": "^1.6.2", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -275,9 +275,9 @@ } }, "node_modules/ccash-client-js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.0.tgz", - "integrity": "sha512-uNLrecsFLS4S3EIzeShnOrcIPYub36K1vG/dq13EL8V76UWeaWB3iWZEO8l2h6VQTXrfSa9PmM/+rAb3BQcahQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.2.tgz", + "integrity": "sha512-1U+QPvlIoFMsYD/Jz+2GncjdTB9pH+uiqKozdbE5wUNPWpBSfjYA6hc0iJAxypfsNR8mI2o5G0yIDdsoGhd5Cw==", "dependencies": { "axios": "^0.21.1", "class-transformer": "^0.4.0" @@ -1883,9 +1883,9 @@ } }, "ccash-client-js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.0.tgz", - "integrity": "sha512-uNLrecsFLS4S3EIzeShnOrcIPYub36K1vG/dq13EL8V76UWeaWB3iWZEO8l2h6VQTXrfSa9PmM/+rAb3BQcahQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.2.tgz", + "integrity": "sha512-1U+QPvlIoFMsYD/Jz+2GncjdTB9pH+uiqKozdbE5wUNPWpBSfjYA6hc0iJAxypfsNR8mI2o5G0yIDdsoGhd5Cw==", "requires": { "axios": "^0.21.1", "class-transformer": "^0.4.0" diff --git a/package.json b/package.json index 447c995..042b4d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "ccash-client-js": "^1.6.0", + "ccash-client-js": "^1.6.2", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/routes/admin.js b/routes/admin.js index dfd81d6..f87554c 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -40,8 +40,9 @@ function mongo() { router.get("/", checkAdmin, function (req, res) { let successes = req.session.successes; + req.session.successes = []; let errors = req.session.errors; - + req.session.errors = []; res.render("adminsettings", { user: req.session.user, admin: req.session.admin, @@ -54,7 +55,12 @@ router.get("/", checkAdmin, function (req, res) { router.post("/user", checkAdmin, async function (req, res) { let { name, init_pass, init_bal, password2 } = req.body; - let contains = await client.contains(name); + let contains; + try { + contains = await client.contains(name); + } catch (e) { + console.log(e); + } req.session.errors = []; req.session.successes = []; if (contains == true) { @@ -90,7 +96,7 @@ router.post("/user", checkAdmin, async function (req, res) { console.log(err); } if (post) { - successes.push({ msg: "Account Creation Successful" }); + req.session.successes.push({ msg: "Account Creation Successful" }); } } res.redirect("/admin"); @@ -107,12 +113,11 @@ router.post("/baluser", checkAdmin, async function (req, res) { console.log(err); } balance = parseInt(balance); - console.log(balance); if (balance < 0) { req.session.errors.push({ msg: "User not found" }); } else { req.session.successes.push({ - msg: "User: " + name + " has " + balance.value + " monies", + msg: "User: " + name + " has " + balance + " monies", }); } res.redirect("/admin"); @@ -136,22 +141,28 @@ router.post("/bal", checkAdmin, async function (req, res) { router.post("/userdelete", checkAdmin, async function (req, res) { let { name, attempt } = req.body; console.log(name); - let contains = await client.contains(name); - let deleteUser; - let successes = []; - let errors = []; + let contains; + try { + contains = await client.contains(name); + } catch (e) { + console.log(e); + } if (attempt != req.session.adminp) { req.session.errors.push({ msg: "Wrong Admin Password" }); - } - console.log(contains); - if (contains == true) { - deleteUser = client.adminDeleteUser(name, attempt); - req.session.successes.push({ msg: "User Deletion Successful" }); + res.redirect("/admin"); } else { - req.session.errors.push({ msg: "User Deletion Failed, User Not Found" }); + console.log(contains); + if (contains == 1) { + let deleteUser = client.adminDeleteUser(name, attempt); + req.session.successes.push({ msg: "User Deletion Successful" }); + res.redirect("/admin"); + } else { + req.session.errors.push({ msg: "User Deletion Failed, User Not Found" }); + res.redirect("/admin"); + } } - res.redirect("/admin"); }); + router.post("/destroyallsessions", checkAdmin, async function (req, res) { let { attempt } = req.body; let adminTest; @@ -164,8 +175,8 @@ router.post("/destroyallsessions", checkAdmin, async function (req, res) { if (adminTest) { req.sessionStore.clear(function (err) { console.log(err); + res.redirect("/"); }); - res.redirect("/"); } else { req.session.errors.push({ msg: "failed admin password check" }); res.redirect("/admin"); From d4c1e9c106ac6cba22fda13b31eb663797b02700 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Tue, 15 Jun 2021 17:55:36 +1000 Subject: [PATCH 07/13] got rid of god forsaken marketplace --- index.js | 105 ++++------------- routes/admin.js | 33 ------ routes/marketplace.js | 246 ---------------------------------------- views/adminsettings.pug | 10 -- views/item.pug | 39 ------- views/itembuy.pug | 41 ------- views/itemlist.pug | 33 ------ views/layout.pug | 5 - views/listings.pug | 4 - views/marketdash.pug | 63 ---------- views/marketlayout.pug | 60 ---------- views/marketplace.pug | 12 -- 12 files changed, 20 insertions(+), 631 deletions(-) delete mode 100644 routes/marketplace.js delete mode 100644 views/item.pug delete mode 100644 views/itembuy.pug delete mode 100644 views/itemlist.pug delete mode 100644 views/listings.pug delete mode 100644 views/marketdash.pug delete mode 100644 views/marketlayout.pug delete mode 100644 views/marketplace.pug diff --git a/index.js b/index.js index effd1e9..217af53 100644 --- a/index.js +++ b/index.js @@ -80,59 +80,6 @@ app.use( }, }) ); -app.post("/setup", async function (req, res) { - console.log(req.body); - let { mongo, url, banksecure, marketplace } = req.body; - process.env.MONGO = mongo; - process.env.MARKETPLACE = false; - if (marketplace) { - process.env.MARKETPLACE = true; - } - if (!url.endsWith("/")) { - url = url + "/"; - } - process.env.BANKAPIURL = url; - process.env.SECURE = false; - if (!banksecure) { - banksecure = false; - process.env.SECURE = false; - } - process.env.SETUP = true; - fs.writeFileSync( - ".env", - "BANKAPIURL=" + - process.env.BANKAPIURL + - "\n" + - "SECURE=" + - process.env.SECURE + - "\n" + - "MARKETPLACE=" + - process.env.MARKETPLACE + - "\n" + - "MONGO=" + - process.env.MONGO + - "\nSETUP=true" - ); - dotenv.config(); - if (process.env.MARKETPLACE) { - mongoose.connect(process.env.MONGO, { - useNewUrlParser: true, - useUnifiedTopology: true, - useFindAndModify: true, - }); - - let db = mongoose.connection; - db.once("open", function () { - console.log("Connected to MongoDB"); - }); - - //check for DB errors - db.on("error", function (err) { - console.log(err); - }); - } - res.redirect("/"); -}); function papy() { const rndInt = Math.floor(Math.random() * 1337); @@ -144,32 +91,27 @@ function papy() { } app.get("/", async function (req, res) { - if (!process.env.SETUP) { - res.render("setup"); - } else { - let checkalive; - try { - checkalive = await client.help(); - } catch (err) { - console.log(err); - } - let alive = false; - try { - if (checkalive) { - alive = true; - } - } catch (err) { - console.log(err); - } - - res.render("index", { - user: req.session.user, - admin: req.session.admin, - alive: alive, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); + let checkalive; + try { + checkalive = await client.help(); + } catch (err) { + console.log(err); } + let alive = false; + try { + if (checkalive) { + alive = true; + } + } catch (err) { + console.log(err); + } + + res.render("index", { + user: req.session.user, + admin: req.session.admin, + alive: alive, + random: papy(), + }); }); app.get("/BankF", ensureAuthenticated, async function (req, res) { let successes = req.session.successes; @@ -259,7 +201,6 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { admin: req.session.admin, sucesses: successes, errors: errors, - marketplace: process.env.MARKETPLACE, random: papy(), }); }); @@ -375,13 +316,9 @@ app.use("/admin", admin); let settings = require("./routes/settings"); app.use("/settings", settings); -let marketplace = require("./routes/marketplace"); -app.use("/marketplace", marketplace); - app.get("/logout", function (req, res) { req.session.regenerate(function (err) { res.render("login", { - marketplace: process.env.MARKETPLACE, random: papy(), }); }); @@ -395,7 +332,6 @@ app.get("/login", function (req, res) { successes: successes, errors: errors, user: req.session.user, - marketplace: process.env.MARKETPLACE, random: papy(), }); }); @@ -411,7 +347,6 @@ app.get("/register", function (req, res) { successes: successes, user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE, random: papy(), }); }); diff --git a/routes/admin.js b/routes/admin.js index f87554c..3459cce 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -206,40 +206,7 @@ router.post("/changebackend", checkAdmin, async function (req, res) { ); res.redirect("../"); }); -router.post("/mongodb", checkAdmin, async function (req, res) { - let { url } = req.body; - process.env.MONGO = url; - if (process.env.MONGO.length < 3) { - process.env.MARKETPLACE = false; - console.log("false"); - } else { - process.env.MARKETPLACE = true; - console.log("true"); - } - fs.writeFileSync( - ".env", - "BANKAPIURL=" + - process.env.BANKAPIURL + - "\n" + - "SECURE=" + - process.env.SECURE + - "\n" + - "MARKETPLACE=" + - process.env.MARKETPLACE + - "\n" + - "MONGO=" + - process.env.MONGO + - "\nSETUP=true" - ); - try { - mongo(); - } catch (e) { - console.log(e); - } - - res.redirect("../"); -}); router.post("/close", checkAdmin, async function (req, res) { let { attempt } = req.body; let close; diff --git a/routes/marketplace.js b/routes/marketplace.js deleted file mode 100644 index ebc4ea9..0000000 --- a/routes/marketplace.js +++ /dev/null @@ -1,246 +0,0 @@ -const express = require("express"); -const router = express.Router(); -const bodyParser = require("body-parser"); -const session = require("express-session"); -const mongoose = require("mongoose"); -const dotenv = require("dotenv"); -const got = require("got"); -const { ensureAuthenticated } = require("../config/auth.js"); -let db; - -function mongo() { - if (process.env.MONGO) { - console.log(process.env.MONGO); - mongoose.connect(process.env.MONGO, { - useNewUrlParser: true, - useUnifiedTopology: true, - useFindAndModify: true, - }); - - let db = mongoose.connection; - db.once("open", function () { - console.log("Connected to MongoDB"); - }); - - //check for DB errors - db.on("error", function (err) { - console.log(err); - }); - } -} - -mongo(); - -let Item = require("../schemas/item"); -let Listing = require("../schemas/listing"); -let Inventory = require("../schemas/inventory"); - -router.all("*", function (req, res, next) { - console.log(req.method, req.url); - next(); -}); - -router.get("/", function (req, res) { - let columns = [0, 1, 2, 3]; - Item.find({}, function (err, items) { - if (err) { - console.log(err); - } else { - res.render("marketplace", { - columns: columns, - items: items, - user: req.session.user, - admin: req.session.admin, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); - } - }); -}); - -router.get("/marketdash", ensureAuthenticated, function (req, res) { - Inventory.findOne({ user: req.session.user }, async function ( - err, - inventory - ) { - if (!inventory) { - let newinv = new Inventory(); - newinv.user = req.session.user; - newinv.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("created new inventory for " + req.session.user); - } - }); - } - - res.render("marketdash", { - user: req.session.user, - admin: req.session.admin, - inventory: inventory, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); - }); -}); - -router.get("/:id", function (req, res) { - Item.findById(req.params.id, function (err, item) { - Listing.find({ foreignid: req.params.id }, function (err, listings) { - console.log(listings); - - res.render("item", { - listings: listings, - user: req.session.user, - admin: req.session.admin, - item: item, - marketplace: process.env.MARKETPLACE, - random: papy(), - }); - }); - }); -}); - -router.get("/:id/list", ensureAuthenticated, function (req, res) { - Item.findById(req.params.id, function (err, item) { - res.render("itemlist", { - user: req.session.user, - admin: req.session.admin, - item: item, - marketplace: process.env.MARKETPLACE, - }); - }); -}); -router.get("/:id/buy", ensureAuthenticated, function (req, res) { - Listing.find({ foreignid: req.params.id }, function (err, listings) { - console.log(listings); - - res.render("itembuy", { - listings: listings, - user: req.session.user, - admin: req.session.admin, - marketplace: process.env.MARKETPLACE, - }); - }); -}); - -router.post("/:id/list", ensureAuthenticated, async function (req, res) { - let body = req.body; - let item = JSON.parse(req.body.item); - console.log(item); - let listing = new Listing(); - listing.itemId = item.itemId; - listing.meta = item.meta; - listing.name = item.name; - listing.foreignid = item._id; - listing.price = body.price; - listing.amount = body.amount; - listing.seller = req.session.user; - listing.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("added " + listing.name + " from " + listing.seller); - } - }); - let inventory = await Inventory.findOne({ user: req.session.user }).exec(); - if (inventory == null) { - let newinv = new Inventory(); - newinv.user = req.session.user; - newinv.listings = listing; - newinv.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("created new inventory for " + req.session.user); - } - }); - } else { - inventory.listings.push(listing); - inventory.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("pushed new listing"); - } - }); - } - res.redirect("/marketplace/marketdash"); -}); -router.post("/:id/buy", async function (req, res) { - Listing.findOne({ _id: req.params.id }, async function (err, listing) { - let inventory = await Inventory.findOne({ user: req.session.user }).exec(); - if (inventory == null) { - let newinv = new Inventory(); - newinv.user = req.session.user; - newinv.purchases = listing; - newinv.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("created new inventory for " + req.session.user); - } - }); - } else { - inventory.purchases.push(listing); - inventory.save(function (err) { - if (err) { - console.log(err); - return; - } else { - console.log("pushed new purchase"); - } - }); - } - Listing.findOneAndRemove({ _id: req.params.id }).exec(); - transfer = got.post(process.env.BANKAPIURL + "BankF/sendfunds", { - json: { - a_name: req.session.user, - b_name: listing.seller, - amount: parseInt(listing.amount * listing.price), - attempt: req.session.password, - }, - responseType: "json", - }); - res.redirect("/marketplace/marketdash"); - }); -}); - -// this thingy here populates the database with minecraft items only use once otherwise you are gonna flood your database -/*router.get('/populatedb', async function(req,res){ - let response = await got('http://minecraft-ids.grahamedgecombe.com/items.json') - let json = JSON.parse(response.body) - console.log(json[1].name) - for(i in json){ - let item = new Item(); - item.name = json[i].name - item.meta = json[i].meta - item.itemId = json[i].type - item.text_type = json[i].text_type - item.save(function(err){ - if(err){ - console.log(err); - return; - } else{ - console.log("added "+ json[i].name) - } - }) - } -})*/ - -function papy() { - const rndInt = Math.floor(Math.random() * 1337); - let random = false; - if (rndInt == 420) { - random = true; - } - return random; -} - -module.exports = router; diff --git a/views/adminsettings.pug b/views/adminsettings.pug index 301d33b..1c9be2a 100644 --- a/views/adminsettings.pug +++ b/views/adminsettings.pug @@ -68,16 +68,6 @@ block content br input.btn.btn-warning(type='submit',value='Submit') br - .card.shadow-lg - h4 Change backend Mongodb URL - form(method='POST', action='/admin/mongodb') - #form-group - p WARNING DO NOT PUT WRONG URL IN YOU WILL BREAK AND HAVE TO DELETE .ENV FILE TO FIX - label Enter URL of new MongoDB or enter a space to turn off marketplace - input.form-control(name='url', type='text') - br - input.btn.btn-warning(type='submit',value='Submit') - br .card.shadow-lg h4 Destroy All Sessions form(method='POST', action='/admin/destroyallsessions') diff --git a/views/item.pug b/views/item.pug deleted file mode 100644 index 015e385..0000000 --- a/views/item.pug +++ /dev/null @@ -1,39 +0,0 @@ -extends marketlayout - -block content - .container - .card - .row - .col - .card - img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png") - .col - center - .row - .col - - p Item: - p ID: - .col - p #{item.name} - p #{item.itemId}-#{item.meta} - .col - .row - .col - center - h4 Buy - .col - center - h4 Sell - .row - .col-xs - - .col-xs - - .col - center - a.btn.btn-primary(href="/marketplace/"+item._id+"/buy") Buy - .col - center - a.btn.btn-primary(href="/marketplace/"+item._id+"/list") List - diff --git a/views/itembuy.pug b/views/itembuy.pug deleted file mode 100644 index bb92eba..0000000 --- a/views/itembuy.pug +++ /dev/null @@ -1,41 +0,0 @@ -extends marketlayout - -block content - .container - .card - .row - .col - .card - img(src="/blockimages/items/"+listings[0].itemId+"-"+listings[0].meta+".png") - .col - .row - .col-sm-2 - p Item: - p ID: - .col-sm-4 - p #{listings[0].name} - p #{listings[0].itemId}-#{listings[0].meta} - .col - h4 Buy - .row - .col - p Seller - .col - p Price - .col - p Amount - .col - p Link - for i in listings - .row - .col - p #{i.seller} - .col - p #{i.price} - .col - p #{i.amount} - .col - form(method='POST', action='/marketplace/'+i._id+"/buy") - input(type="hidden" value=i name="listing") - input.btn.btn-primary.btn-sm(type='submit', value='Buy') - diff --git a/views/itemlist.pug b/views/itemlist.pug deleted file mode 100644 index 0cefea0..0000000 --- a/views/itemlist.pug +++ /dev/null @@ -1,33 +0,0 @@ -extends marketlayout - - -block content - .container - .card - .row - .col - .card - img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png") - .col - .row - .col-sm-2 - p Item: - p ID: - .col-sm-2 - p #{item.name} - p #{item.itemId}-#{item.meta} - .col - h4 Sell - form(method='POST', action='/marketplace/'+item._id+'/list') - label Selling Price: - br - input.form-control-lg.shadow(type="number" min="0" name="price") - br - br - label Amount: - br - input.form-control-lg.shadow(type="number" min="0" name="amount") - br - br - input(type="hidden" value=item name="item") - input.btn.btn-primary(type='submit', value='Submit') diff --git a/views/layout.pug b/views/layout.pug index e5bde85..df647ae 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -32,11 +32,6 @@ html a.nav-link(href='/logout').text-white Log out li.nav-item a.nav-link(href='/BankF').text-white Bank - if marketplace - li.nav-item - a.nav-link(href='/marketplace').text-white MarketPlace - li.nav-item - a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard li.nav-item a.nav-link(href='/settings').text-white Settings if admin == true diff --git a/views/listings.pug b/views/listings.pug deleted file mode 100644 index 5fc1b4e..0000000 --- a/views/listings.pug +++ /dev/null @@ -1,4 +0,0 @@ -extends marketlayout - -block content - diff --git a/views/marketdash.pug b/views/marketdash.pug deleted file mode 100644 index 3237dc1..0000000 --- a/views/marketdash.pug +++ /dev/null @@ -1,63 +0,0 @@ -extends layout - -block content - .container - h2 Welcome to the marketplace dashboard #{inventory.user} - .card - ul#market.nav.nav-tabs.card-header-tabs(role='tablist') - li.nav-item - a.nav-link.active.text-black(href='#purchases', role='tab', aria-controls='purchases', aria-selected='true') Purchases - li.nav-item - a.nav-link.text-black(href='#selling', role='tab', aria-controls='selling', aria-selected='false') Selling - .tab-content.mt-3 - #purchases.tab-pane.active(role='tabpanel' aria-labelledby='purchases-tab') - .row - .col - p itemID - .col - p Item Name - .col - p Price - .col - p Amount - .col - p Seller - - for i in inventory.purchases - .row - .col - p #{i.itemId}-#{i.meta} - .col - p #{i.name} - .col - p #{i.price} - .col - p #{i.amount} - .col - p #{i.seller} - #selling.tab-pane(role='tabpanel', aria-labelledby='selling-tab') - .row - .col - p itemID - .col - p Item Name - .col - p Price - .col - p Amount - .col - p Seller - - for i in inventory.listings - .row - .col - p #{i.itemId}-#{i.meta} - .col - p #{i.name} - .col - p #{i.price} - .col - p #{i.amount} - .col - p #{i.seller} - diff --git a/views/marketlayout.pug b/views/marketlayout.pug deleted file mode 100644 index d926671..0000000 --- a/views/marketlayout.pug +++ /dev/null @@ -1,60 +0,0 @@ -doctype html -html - head - title CCashBank - link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css", integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z", crossorigin="anonymous") - link(rel="preconnect" href="https://fonts.gstatic.com") - link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet") - link(rel='stylesheet' href='/css/style.css') - meta(name='viewport', content='width=device-width, initial-scale=1.0') - body - nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg - .container - a.navbar-brand(href='/') - img(src="/CCashLogo3.png" style="width:75px; height:74px") - button.navbar-toggler(type='button', data-toggle='collapse', data-target='#navbars', aria-controls='navbars', aria-expanded='false', aria-label='Toggle navigation') - span.navbar-toggler-icon - #navbars.collapse.navbar-collapse - ul.navbar-nav.mr-auto - - ul.navbar-nav.mr-right.text-white - if user == undefined - li.nav-item - a.nav-link(href='/login').text-white Login - li.nav-item - a.nav-link(href='/register').text-white Register - li.nav-item - a.nav-link(href='/marketplace').text-white MarketPlace - if user - li.nav-item - a.nav-link(href='/logout').text-white Log out - li.nav-item - a.nav-link(href='/BankF').text-white Bank - if marketplace == true - li.nav-item - a.nav-link(href='/marketplace').text-white MarketPlace - li.nav-item - a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard - li.nav-item - a.nav-link(href='/settings').text-white Settings - if admin == true - li.nav-item - a.nav-link(href='/admin').text-white Admin - .container - != messages('message', locals) - if errors - each error, i in errors - div(class="alert alert-danger") #{error.msg} - if successes - each success, i in successes - div(class="alert alert-success") #{success.msg} - br - br - block content - br - hr - - script(src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" - crossorigin="anonymous") - script(src='/js/main.js') - script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js", integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV", crossorigin="anonymous") diff --git a/views/marketplace.pug b/views/marketplace.pug deleted file mode 100644 index 743929d..0000000 --- a/views/marketplace.pug +++ /dev/null @@ -1,12 +0,0 @@ -extends marketlayout - -block content - .container - .row - each item in items - .col.col-xs-12 - a(href="/marketplace/"+item._id) - .card(style="height: 130px;width:140px;margin:10px") - p #{item.name} - img(src="/blockimages/items/"+item.itemId+"-"+item.meta+".png") - br From 4ab1e823b7799d80d1a0ffeebb1a9069c2118603 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Tue, 15 Jun 2021 18:30:05 +1000 Subject: [PATCH 08/13] made the thingy do things when restart --- .gitignore | 2 ++ routes/admin.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 8692cf6..8bd7bd9 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +tmp diff --git a/routes/admin.js b/routes/admin.js index 3459cce..ccb6621 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -204,6 +204,8 @@ router.post("/changebackend", checkAdmin, async function (req, res) { process.env.MONGO + "\nSETUP=true" ); + fs.mkdirSync("tmp"); + fs.writeFileSync("tmp/restart.txt", ""); res.redirect("../"); }); From 8b7f1256469849ede291ab654deeacd1daae6098 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Wed, 16 Jun 2021 06:38:44 +1000 Subject: [PATCH 09/13] fix transfer --- index.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/index.js b/index.js index 217af53..80b5109 100644 --- a/index.js +++ b/index.js @@ -212,15 +212,7 @@ app.post("/sendfunds", async function (req, res) { let a_name = req.session.user; let result; try { - result = await got.post( - `${process.env.BANKAPIURL}/${a_name}/send/${name}?amount=${amount}`, - { - headers: { - Password: senderpass, - }, - } - ); - //client.sendFunds(a_name, senderpass, name, amount); + result = await client.sendFunds(a_name, senderpass, name, amount); } catch (e) { console.log(e); } From 15f2fbcfb62b5baca4a16d11e02fbf5cf66f9532 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Wed, 16 Jun 2021 11:14:41 +1000 Subject: [PATCH 10/13] better error handling and speed improvements --- index.js | 90 +++++++++++++++++---------------------- package-lock.json | 102 +++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- routes/admin.js | 100 ++++++++++++++++---------------------------- routes/settings.js | 8 +--- 5 files changed, 163 insertions(+), 139 deletions(-) diff --git a/index.js b/index.js index 80b5109..22f5b7d 100644 --- a/index.js +++ b/index.js @@ -137,6 +137,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } catch (e) { console.log(e); } + console.log(logsent); let logrec = logsent; let graphlog = logsent; if (graphlog != null) { @@ -211,56 +212,46 @@ app.post("/sendfunds", async function (req, res) { req.session.successes = []; let a_name = req.session.user; let result; - try { - result = await client.sendFunds(a_name, senderpass, name, amount); - } catch (e) { - console.log(e); - } + result = await client.sendFunds(a_name, senderpass, name, amount); console.log(result); - if (result == true || result) { + if (result == 1) { req.session.successes.push({ msg: "Transfer successful" }); //post details res.redirect("/BankF"); - } else { - req.session.errors.push({ msg: "Transfer Unsuccessful" }); + } else if (result == -1) { + req.session.errors.push({ msg: "Transfer Unsuccessful: User not Found" }); + res.redirect("/Bankf"); + } else if (result == -2) { + req.session.errors.push({ msg: "Transfer Unsuccessful: Wrong Password" }); res.redirect("/Bankf"); } }); app.post("/register", async function (req, res) { var { name, password, password2 } = req.body; - let checkuser; - try { - checkuser = await client.contains(name); - } catch (e) { - console.log(e); - } - req.session.errors = []; req.session.successes = []; - if (!checkuser) { - if (!name || !password || !password2) { - req.session.errors.push({ msg: "please fill in all fields" }); - } - if (password !== password2) { - req.session.errors.push({ msg: "Passwords don't match" }); - } - if (password.length < 6) { - req.session.errors.push({ - msg: "Password must be at least 6 characters", - }); - } - if (req.session.errors[0]) { + if (!name || !password || !password2) { + req.session.errors.push({ msg: "please fill in all fields" }); + } else if (password !== password2) { + req.session.errors.push({ msg: "Passwords don't match" }); + } else if (password.length < 6) { + req.session.errors.push({ + msg: "Password must be at least 6 characters", + }); + } else { + let checkuser = await postUser(name, password); + console.log(checkuser); + if (checkuser == -4) { + req.session.errors.push({ msg: "Error: Name too long" }); + res.redirect("/register"); + } else if (checkuser == -5) { + req.session.errors.push({ msg: "Error: User Already Exists" }); res.redirect("/register"); } else { - if (postUser(name, password)) { - req.session.successes.push({ msg: "User Registered Please Log In" }); - res.redirect("/login"); - } + req.session.successes.push({ msg: "Account Created! please Log in" }); + res.redirect("/login"); } - } else { - req.session.errors.push({ msg: "User already exists" }); - res.redirect("/register"); } }); @@ -272,11 +263,12 @@ app.post("/login", async function (req, res) { const { name, password } = req.body; let adminTest; try { - adminTest = await client.adminVerifyPass(password); + adminTest = await client.adminVerifyPassword(password); } catch (err) { console.log(err); } - if (adminTest) { + console.log(adminTest); + if (adminTest != -2) { req.session.admin = adminTest; req.session.adminp = password; req.session.user = name; @@ -284,20 +276,16 @@ app.post("/login", async function (req, res) { res.redirect("/BankF"); } else { let verified; - try { - verified = await client.verifyPassword(name, password); - } catch (err) { - console.log(err); - } finally { - if (!verified) { - req.session.errors = []; - req.session.errors.push({ msg: "Password wrong" }); - res.redirect("/login"); - } else { - req.session.user = name; - req.session.password = password; - res.redirect("/BankF"); - } + verified = await client.verifyPassword(name, password); + console.log(verified); + if (verified == 1) { + req.session.user = name; + req.session.password = password; + res.redirect("/BankF"); + } else { + req.session.errors = []; + req.session.errors.push({ msg: "Password wrong" }); + res.redirect("/login"); } } }); diff --git a/package-lock.json b/package-lock.json index c7719ce..0f9bf85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "ccash-client-js": "^1.6.2", + "ccash-client-js": "^1.6.3", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", @@ -130,6 +130,11 @@ "@types/node": "*" } }, + "node_modules/@types/validator": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.4.tgz", + "integrity": "sha512-19C02B8mr53HufY7S+HO/EHBD7a/R22IwEwyqiHaR19iwL37dN3o0M8RianVInfSSqP7InVSg/o0mUATM4JWsQ==" + }, "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -275,14 +280,36 @@ } }, "node_modules/ccash-client-js": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.2.tgz", - "integrity": "sha512-1U+QPvlIoFMsYD/Jz+2GncjdTB9pH+uiqKozdbE5wUNPWpBSfjYA6hc0iJAxypfsNR8mI2o5G0yIDdsoGhd5Cw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.3.tgz", + "integrity": "sha512-w6izW9L9l0G78BrRwVvP7tWFbmBekq+tepTmqK28+2lcczCaNvJnCDIqW9pQgZ6u9OjI9GX8bUteQu+7PbxiLA==", "dependencies": { "axios": "^0.21.1", - "class-transformer": "^0.4.0" + "class-validator": "^0.13.1", + "debug": "^4.3.1" } }, + "node_modules/ccash-client-js/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/ccash-client-js/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -291,10 +318,15 @@ "is-regex": "^1.0.3" } }, - "node_modules/class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "node_modules/class-validator": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz", + "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==", + "dependencies": { + "@types/validator": "^13.1.3", + "libphonenumber-js": "^1.9.7", + "validator": "^13.5.2" + } }, "node_modules/clone-response": { "version": "1.0.2", @@ -834,6 +866,11 @@ "json-buffer": "3.0.1" } }, + "node_modules/libphonenumber-js": { + "version": "1.9.19", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz", + "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==" + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1768,6 +1805,11 @@ "@types/node": "*" } }, + "@types/validator": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.4.tgz", + "integrity": "sha512-19C02B8mr53HufY7S+HO/EHBD7a/R22IwEwyqiHaR19iwL37dN3o0M8RianVInfSSqP7InVSg/o0mUATM4JWsQ==" + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -1883,12 +1925,28 @@ } }, "ccash-client-js": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.2.tgz", - "integrity": "sha512-1U+QPvlIoFMsYD/Jz+2GncjdTB9pH+uiqKozdbE5wUNPWpBSfjYA6hc0iJAxypfsNR8mI2o5G0yIDdsoGhd5Cw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ccash-client-js/-/ccash-client-js-1.6.3.tgz", + "integrity": "sha512-w6izW9L9l0G78BrRwVvP7tWFbmBekq+tepTmqK28+2lcczCaNvJnCDIqW9pQgZ6u9OjI9GX8bUteQu+7PbxiLA==", "requires": { "axios": "^0.21.1", - "class-transformer": "^0.4.0" + "class-validator": "^0.13.1", + "debug": "^4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "character-parser": { @@ -1899,10 +1957,15 @@ "is-regex": "^1.0.3" } }, - "class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "class-validator": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.1.tgz", + "integrity": "sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg==", + "requires": { + "@types/validator": "^13.1.3", + "libphonenumber-js": "^1.9.7", + "validator": "^13.5.2" + } }, "clone-response": { "version": "1.0.2", @@ -2320,6 +2383,11 @@ "json-buffer": "3.0.1" } }, + "libphonenumber-js": { + "version": "1.9.19", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz", + "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==" + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", diff --git a/package.json b/package.json index 042b4d3..ae83762 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "ccash-client-js": "^1.6.2", + "ccash-client-js": "^1.6.3", "connect-flash": "^0.1.1", "dotenv": "^8.2.0", "express": "^4.17.1", diff --git a/routes/admin.js b/routes/admin.js index ccb6621..192c0a0 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -54,50 +54,33 @@ router.get("/", checkAdmin, function (req, res) { }); router.post("/user", checkAdmin, async function (req, res) { - let { name, init_pass, init_bal, password2 } = req.body; - let contains; - try { - contains = await client.contains(name); - } catch (e) { - console.log(e); - } req.session.errors = []; req.session.successes = []; - if (contains == true) { - errors.push({ msg: "User already exists" }); - res.render("adminsettings", { - errors: errors, + let { name, init_pass, init_bal, password2 } = req.body; + if (!name || !init_pass || !init_bal || !password2) { + req.session.errors.push({ msg: "please fill in all fields" }); + } else if (init_pass !== password2) { + req.session.errors.push({ msg: "Passwords don't match" }); + } else if (init_pass.length < 6) { + req.session.errors.push({ + msg: "Password must be at least 6 characters", }); + } + let post = await client.adminAddUser( + name, + req.session.adminp, + init_pass, + parseInt(init_bal) + ); + console.log(post); + if (post == -3) { + req.session.errors.push({ msg: "Invalid Request" }); + } else if (post == -4) { + req.session.errors.push({ msg: "Name too long" }); + } else if (post == -5) { + req.session.errors.push({ msg: "User already exists" }); } else { - if (!name || !init_pass || !init_bal || !password2) { - req.session.errors.push({ msg: "please fill in all fields" }); - } - //check if match - if (init_pass !== password2) { - req.session.errors.push({ msg: "Passwords don't match" }); - } - - //check if password is more than 6 characters - if (init_pass.length < 6) { - req.session.errors.push({ - msg: "Password must be at least 6 characters", - }); - } - let post; - let successes = []; - try { - post = await client.adminAddUser( - name, - req.session.adminp, - init_pass, - parseInt(init_bal) - ); - } catch (err) { - console.log(err); - } - if (post) { - req.session.successes.push({ msg: "Account Creation Successful" }); - } + req.session.successes.push({ msg: "Account Creation Successful" }); } res.redirect("/admin"); }); @@ -107,11 +90,8 @@ router.post("/baluser", checkAdmin, async function (req, res) { let balance; req.session.successes = []; req.session.errors = []; - try { - balance = await client.balance(name); - } catch (err) { - console.log(err); - } + balance = await client.balance(name); + console.log(balance.body); balance = parseInt(balance); if (balance < 0) { req.session.errors.push({ msg: "User not found" }); @@ -128,36 +108,28 @@ router.post("/bal", checkAdmin, async function (req, res) { let patch; req.session.successes = []; req.session.errors = []; - try { - patch = await client.setBalance(name, req.session.adminp, parseInt(amount)); - } catch (err) { - console.log(err); - } - if (patch) { + patch = await client.setBalance(name, req.session.adminp, parseInt(amount)); + console.log(patch); + if (patch == -1) { + req.session.errors.push({ msg: "User not Found" }); + } else if (patch == 1) { req.session.successes.push({ msg: "Change Funds Successful" }); } res.redirect("/admin"); }); + router.post("/userdelete", checkAdmin, async function (req, res) { let { name, attempt } = req.body; - console.log(name); - let contains; - try { - contains = await client.contains(name); - } catch (e) { - console.log(e); - } if (attempt != req.session.adminp) { req.session.errors.push({ msg: "Wrong Admin Password" }); res.redirect("/admin"); } else { - console.log(contains); - if (contains == 1) { - let deleteUser = client.adminDeleteUser(name, attempt); - req.session.successes.push({ msg: "User Deletion Successful" }); + let deleteUser = client.adminDeleteUser(name, attempt); + if (deleteUser == -1) { + req.session.errors.push({ msg: "User Deletion Failed, User Not Found" }); res.redirect("/admin"); } else { - req.session.errors.push({ msg: "User Deletion Failed, User Not Found" }); + req.session.successes.push({ msg: "User Deletion Successful" }); res.redirect("/admin"); } } @@ -168,7 +140,7 @@ router.post("/destroyallsessions", checkAdmin, async function (req, res) { let adminTest; req.session.errors = []; try { - adminTest = await client.adminVerifyPass(attempt); + adminTest = await client.adminVerifyPassword(attempt); } catch (err) { console.log(err); } diff --git a/routes/settings.js b/routes/settings.js index c93590e..7765934 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -48,13 +48,9 @@ router.post("/pass", ensureAuthenticated, async function (req, res) { console.log(req.session.errors); res.redirect("/settings"); } else { - try { - patch = await client.changePassword(req.session.user, attempt, new_pass); - } catch (err) { - console.log(err); - } + patch = await client.changePassword(req.session.user, attempt, new_pass); console.log(patch); - if (patch) { + if (patch == -2) { req.session.errors.push({ msg: "Password Wrong", }); From df264c3d505eb5371235f5e4742c425b828f52c8 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Wed, 16 Jun 2021 15:14:18 +1000 Subject: [PATCH 11/13] changed some graph stuff --- views/bankf.pug | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/views/bankf.pug b/views/bankf.pug index ded0c14..28ca31e 100644 --- a/views/bankf.pug +++ b/views/bankf.pug @@ -49,7 +49,7 @@ block content p Date: #{log.time} p You sent #{log.to} $#{log.amount} hr - #received.tab-pane(role='tabpanel', aria-labelledby='contact-tab') + #received.tab-pane(role='tabpanel', aria-labelledby='recieved-tab') .logs if logrec each log in logrec @@ -57,25 +57,34 @@ block content p Date: #{log.time} p #{log.from} sent you $#{log.amount} hr - - #balhistory.tab-pane(role='tabpanel', aria-labelledby='contact-tab') + #balhistory.tab-pane(role='tabpanel', aria-labelledby='balhistory-tab') #chart_div(style="width:100%; height 100%") script(type='text/javascript' src='https://www.gstatic.com/charts/loader.js') script(type='text/javascript'). - google.charts.load('current', {'packages':['corechart']}); + google.charts.load('current', {'packages':['corechart', 'line']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([!{graphdata}]); var options = { title: 'Balance', - hAxis: {title: 'Transaction', minValue: 0, maxValue: 15, direction: 1, textPosition: 'none'}, - vAxis: {title: 'Balance', minValue: 0, maxValue: 500}, - legend: 'none', + hAxis: { + title: 'Transaction', + textPosition: 'out', + }, + vAxis: { + title: 'Balance', + format: 'currency', + textPosition: 'out', + }, + trendlines: { + 0: {type: 'exponential', color: '#333', opacity: .1}, + 1: {type: 'linear', color: '#111', opacity: .3} + }, width: 670, - height: 350 + height: 350, }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); From af18276fdbe6e77f60dd841624f14728a86e49e3 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Wed, 16 Jun 2021 15:17:51 +1000 Subject: [PATCH 12/13] fug --- views/bankf.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bankf.pug b/views/bankf.pug index 28ca31e..8d24ef0 100644 --- a/views/bankf.pug +++ b/views/bankf.pug @@ -80,7 +80,7 @@ block content textPosition: 'out', }, trendlines: { - 0: {type: 'exponential', color: '#333', opacity: .1}, + 0: {type: 'exponential', color: '#333', opacity: .5}, 1: {type: 'linear', color: '#111', opacity: .3} }, width: 670, From eece1ee68fe52eab421fabd56af0f9a916835036 Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Wed, 16 Jun 2021 15:25:15 +1000 Subject: [PATCH 13/13] kinda resizing --- views/bankf.pug | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bankf.pug b/views/bankf.pug index 8d24ef0..75bed4b 100644 --- a/views/bankf.pug +++ b/views/bankf.pug @@ -90,6 +90,8 @@ block content var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); + window.onload = resize; + window.onresize = resize; } br