better error handling and speed improvements

This commit is contained in:
Expand-sys 2021-06-16 11:14:41 +10:00
parent 8b7f125646
commit 15f2fbcfb6
5 changed files with 163 additions and 139 deletions

View file

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

102
package-lock.json generated
View file

@ -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",

View file

@ -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",

View file

@ -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);
}

View file

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