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", });