somewhat done

This commit is contained in:
Expand-sys 2021-07-05 21:01:43 +10:00
parent b5ee1e6535
commit 2d74873189
4 changed files with 358 additions and 58 deletions

121
index.js
View file

@ -46,6 +46,8 @@ fastify.register(require("point-of-view"), {
root: path.join(__dirname, "views"), root: path.join(__dirname, "views"),
}); });
const api = process.env.BANKAPIURL;
function papy() { function papy() {
const rndInt = Math.floor(Math.random() * 1337); const rndInt = Math.floor(Math.random() * 1337);
let random = false; let random = false;
@ -87,8 +89,13 @@ fastify.get("/", async function (req, res) {
if (process.env.SETUP == false || !process.env.SETUP) { if (process.env.SETUP == false || !process.env.SETUP) {
res.view("setup"); res.view("setup");
} else { } else {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {
@ -109,7 +116,7 @@ fastify.get(
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
@ -123,12 +130,30 @@ fastify.get(
let balance = 0; let balance = 0;
const user = req.session.get("user"); const user = req.session.get("user");
const password = req.session.get("password"); const password = req.session.get("password");
balance = await client.balance(req.session.get("user")); const auth = req.session.get("b64");
//balance = await client.balance(req.session.get("user"));
balance = await got(`${api}/user/balance`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
query: {
name: user,
},
});
balance = parseInt(balance.body);
console.log(balance); console.log(balance);
console.log("start " + Date.now()); console.log("start " + Date.now());
let logsent = await client.log(user, password); //let logsent = await client.log(user, password);
let logsent = await got(`${api}/user/log`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
});
logsent = JSON.parse(logsent.body);
console.log(logsent);
let logrec = logsent; let logrec = logsent;
let graphlog = logsent; let graphlog = logsent;
if (graphlog != null) { if (graphlog != null) {
@ -207,13 +232,22 @@ fastify.post(
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let { amount, name, senderpass } = req.body; let { amount, name, senderpass } = req.body;
req.session.set("errors", ""); req.session.set("errors", "");
req.session.set("successes", ""); req.session.set("successes", "");
let a_name = req.session.get("user");
let result; let result;
result = await client.sendFunds(a_name, senderpass, name, amount); //result = await client.sendFunds(a_name, senderpass, name, amount);
result = await got.post(`${api}/user/transfer`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
json: {
to: name,
amount: amount,
},
});
console.log(result); console.log(result);
if (result == 1) { if (result == 1) {
req.session.set("successes", "Transfer successful"); req.session.set("successes", "Transfer successful");
@ -230,7 +264,7 @@ fastify.post(
); );
fastify.post("/register", async function (req, res) { fastify.post("/register", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
var { name, password, password2 } = req.body; var { name, password, password2 } = req.body;
req.session.set("successes", ""); req.session.set("successes", "");
req.session.set("errors", ""); req.session.set("errors", "");
@ -244,7 +278,16 @@ fastify.post("/register", async function (req, res) {
req.session.set("errors", "Password must be at least 6 characters"); req.session.set("errors", "Password must be at least 6 characters");
res.redirect("/register"); res.redirect("/register");
} else { } else {
let checkuser = await client.addUser(name, password); //let checkuser = await client.addUser(name, password);
let checkuser = await got.post(`${api}/user/register`, {
headers: {
Accept: "application/json",
},
json: {
name: `${name}`,
pass: `${password}`,
},
});
console.log(await checkuser); console.log(await checkuser);
if (checkuser == -4) { if (checkuser == -4) {
req.session.set("errors", "Error: Name too long"); req.session.set("errors", "Error: Name too long");
@ -260,30 +303,51 @@ fastify.post("/register", async function (req, res) {
}); });
fastify.post("/login", async function (req, res) { fastify.post("/login", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
if (req.session.get("user")) { if (req.session.get("user")) {
res.redirect("/"); res.redirect("/");
} }
const { name, password } = req.body; const { name, password } = req.body;
let adminTest; let adminTest;
try { /*try {
adminTest = await client.adminVerifyPassword(password); adminTest = await client.adminVerifyPassword(password);
} catch (err) { } catch (err) {
console.log(err); console.log(err);
}*/
let auth = btoa(`${name}:${password}`);
auth = `Basic ${auth}`;
console.log(auth);
try {
adminTest = await got.post(`${api}/admin/verify_account`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
});
} catch (e) {
console.log(e);
} }
adminTest = JSON.parse(adminTest.body);
console.log(adminTest); console.log(adminTest);
if (adminTest != -2) { if (adminTest != -2) {
req.session.set("b64", auth);
req.session.set("admin", adminTest); req.session.set("admin", adminTest);
req.session.set("adminp", password);
req.session.set("user", name); req.session.set("user", name);
req.session.set("password", password); req.session.set("password", password);
res.redirect("/BankF"); res.redirect("/BankF");
} else { } else {
let verified; let verified;
verified = await client.verifyPassword(name, password); //verified = await client.verifyPassword(name, password);
verified = await got.post(`${api}/user/verify_password`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
});
console.log(verified); console.log(verified);
if (verified == 1) { if (verified == 1) {
req.session.set("b64", auth);
req.session.set("user", name); req.session.set("user", name);
req.session.set("password", password); req.session.set("password", password);
res.redirect("/BankF"); res.redirect("/BankF");
@ -299,8 +363,13 @@ fastify.register(require("./routes/admin"), { prefix: "/admin" });
fastify.register(require("./routes/settings"), { prefix: "/settings" }); fastify.register(require("./routes/settings"), { prefix: "/settings" });
fastify.get("/logout", async function (req, res) { fastify.get("/logout", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {
@ -318,12 +387,17 @@ fastify.get("/logout", async function (req, res) {
}); });
fastify.get("/login", async function (req, res) { fastify.get("/login", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
req.session.set("errors", ""); req.session.set("errors", "");
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {
@ -339,12 +413,17 @@ fastify.get("/login", async function (req, res) {
}); });
fastify.get("/register", async function (req, res) { fastify.get("/register", async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let successes = req.session.get("successes"); let successes = req.session.get("successes");
req.session.set("successes", ""); req.session.set("successes", "");
let errors = req.session.get("errors"); let errors = req.session.get("errors");
req.session.set("errors", ""); req.session.set("errors", "");
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {

View file

@ -7,7 +7,7 @@ const got = require("got");
const fs = require("fs"); const fs = require("fs");
const { CCashClient } = require("ccash-client-js"); const { CCashClient } = require("ccash-client-js");
const api = process.env.BANKAPIURL;
console.log("Sen was here"); console.log("Sen was here");
module.exports = function (fastify, opts, done) { module.exports = function (fastify, opts, done) {
fastify.get( fastify.get(
@ -16,8 +16,13 @@ module.exports = function (fastify, opts, done) {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {
@ -44,7 +49,7 @@ module.exports = function (fastify, opts, done) {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let { name, init_pass, init_bal, password2 } = req.body; let { name, init_pass, init_bal, password2 } = req.body;
if (!name || !init_pass || !init_bal || !password2) { if (!name || !init_pass || !init_bal || !password2) {
req.session.set("errors", "please fill in all fields"); req.session.set("errors", "please fill in all fields");
@ -53,13 +58,25 @@ module.exports = function (fastify, opts, done) {
} else if (init_pass.length < 6) { } else if (init_pass.length < 6) {
req.session.set("errors", "Password must be at least 6 characters"); req.session.set("errors", "Password must be at least 6 characters");
} }
let post = await client.adminAddUser( /*let post = await client.adminAddUser(
name, name,
req.session.get("adminp"), req.session.get("adminp"),
init_pass, init_pass,
parseInt(init_bal) parseInt(init_bal)
); );*/
console.log(post);
let post = await got.post(`${api}/admin/user/register`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
balance: parseInt(init_bal),
pass: init_pass,
},
});
console.log(post.body);
if (post == -3) { if (post == -3) {
req.session.set("errors", "Invalid Request"); req.session.set("errors", "Invalid Request");
} else if (post == -4) { } else if (post == -4) {
@ -79,14 +96,23 @@ module.exports = function (fastify, opts, done) {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let { name } = req.body; let { name } = req.body;
let balance; let balance;
req.session.set("successes", ""); req.session.set("successes", "");
req.session.set("errors", ""); req.session.set("errors", "");
balance = await client.balance(name); //balance = await client.balance(name);
console.log(balance.body); balance = await got(`${api}/user/balance`, {
balance = parseInt(balance); headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
query: {
name: name,
},
});
balance = parseInt(balance.body);
console.log(balance);
if (balance < 0) { if (balance < 0) {
req.session.set("errors", "User not found"); req.session.set("errors", "User not found");
} else { } else {
@ -100,7 +126,7 @@ module.exports = function (fastify, opts, done) {
); );
fastify.post( fastify.post(
"/bal", "/setbal",
{ {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
@ -110,11 +136,91 @@ module.exports = function (fastify, opts, done) {
let patch; let patch;
req.session.successes = []; req.session.successes = [];
req.session.errors = []; req.session.errors = [];
patch = await client.setBalance( /*patch = await client.setBalance(
name, name,
req.session.get("adminp"), req.session.get("adminp"),
parseInt(amount) parseInt(amount)
); );*/
patch = await got.patch(`${api}/admin/set_balance`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
amount: parseInt(amount),
},
});
console.log(patch);
if (patch == -1) {
req.session.set("errors", "User not Found");
} else if (patch == 1) {
req.session.set("successes", "Change Funds Successful");
}
res.redirect("/admin");
}
);
fastify.post(
"/subbal",
{
preValidation: [validateAdmin],
},
async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL);
let { name, amount } = req.body;
let patch;
req.session.successes = [];
req.session.errors = [];
/*patch = await client.setBalance(
name,
req.session.get("adminp"),
parseInt(amount)
);*/
patch = await got.post(`${api}/admin/sub_balance`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
amount: parseInt(amount),
},
});
console.log(patch);
if (patch == -1) {
req.session.set("errors", "User not Found");
} else if (patch == 1) {
req.session.set("successes", "Change Funds Successful");
}
res.redirect("/admin");
}
);
fastify.post(
"/addbal",
{
preValidation: [validateAdmin],
},
async function (req, res) {
//const client = new CCashClient(process.env.BANKAPIURL);
let { name, amount } = req.body;
let patch;
req.session.successes = [];
req.session.errors = [];
/*patch = await client.setBalance(
name,
req.session.get("adminp"),
parseInt(amount)
);*/
patch = await got.post(`${api}/admin/add_balance`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
amount: parseInt(amount),
},
});
console.log(patch); console.log(patch);
if (patch == -1) { if (patch == -1) {
req.session.set("errors", "User not Found"); req.session.set("errors", "User not Found");
@ -125,28 +231,83 @@ module.exports = function (fastify, opts, done) {
} }
); );
fastify.post(
"/admpass",
{
preValidation: [validateAdmin],
},
async function (req, res) {
//const client = new CCashClient(process.env.BANKAPIURL);
let { name, new_pass, password2 } = req.body;
let patch;
if (!new_pass || !password2) {
req.session.set("errors", "please fill in all fields");
res.redirect("/settings");
} else if (new_pass != password2) {
req.session.set("errors", "Passwords don't match");
res.redirect("/settings");
} else if (new_pass.length < 6) {
req.session.set("errors", "Password must be at least 6 characters");
res.redirect("/settings");
} else {
/*patch = await client.changePassword(
req.session.get("user"),
attempt,
new_pass
);*/
patch = await got.patch(`${api}/user/change_password`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
new_pass: new_pass,
},
});
console.log(patch);
if (patch == -2) {
req.session.set("errors", "Password Wrong");
res.redirect("/");
} else {
req.session.set(
"successes",
"Change Password Successful, Please Login Again"
);
res.redirect("/");
}
}
}
);
fastify.post( fastify.post(
"/userdelete", "/userdelete",
{ {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let { name, attempt } = req.body; let { name, attempt } = req.body;
if (attempt != req.session.get("adminp")) {
req.session.set("errors", "Wrong Admin Password"); //let deleteUser = client.adminDeleteUser(name, attempt);
let deleteUser = await got.delete(`${api}/admin/delete`, {
headers: {
Authorization: req.session.get("b64"),
Accept: "application/json",
},
json: {
name: name,
},
});
if (deleteUser == -1) {
req.session.errors.push({
msg: "User Deletion Failed, User Not Found",
});
res.redirect("/admin"); res.redirect("/admin");
} else { } else {
let deleteUser = client.adminDeleteUser(name, attempt); req.session.set("successes", "User Deletion Successful");
if (deleteUser == -1) { res.redirect("/admin");
req.session.errors.push({
msg: "User Deletion Failed, User Not Found",
});
res.redirect("/admin");
} else {
req.session.set("successes", "User Deletion Successful");
res.redirect("/admin");
}
} }
} }
); );

View file

@ -19,8 +19,13 @@ module.exports = function (fastify, opts, done) {
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/ping`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) { if (checkalive) {
alive = true; alive = true;
} else { } else {
@ -46,7 +51,7 @@ module.exports = function (fastify, opts, done) {
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); //const client = new CCashClient(process.env.BANKAPIURL);
let { attempt, new_pass, password2 } = req.body; let { attempt, new_pass, password2 } = req.body;
let patch; let patch;
if (attempt == undefined) { if (attempt == undefined) {
@ -61,11 +66,20 @@ module.exports = function (fastify, opts, done) {
req.session.set("errors", "Password must be at least 6 characters"); req.session.set("errors", "Password must be at least 6 characters");
res.redirect("/settings"); res.redirect("/settings");
} else { } else {
patch = await client.changePassword( /*patch = await client.changePassword(
req.session.get("user"), req.session.get("user"),
attempt, attempt,
new_pass new_pass
); );*/
patch = await got.patch(`${api}/user/change_password`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
json: {
new_pass: new_pass,
},
});
console.log(patch); console.log(patch);
if (patch == -2) { if (patch == -2) {
req.session.set("errors", "Password Wrong"); req.session.set("errors", "Password Wrong");
@ -88,17 +102,26 @@ module.exports = function (fastify, opts, done) {
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
const client = new CCashClient(process.env.BANKAPIURL); // const client = new CCashClient(process.env.BANKAPIURL);
let { password, password2 } = req.body; let { password, password2 } = req.body;
let del; let del;
if (!password || !password2) { if (!password || !password2) {
req.session.set("errors", "please fill in all fields"); req.session.set("errors", "please fill in all fields");
res.redirect("/settings"); res.redirect("/settings");
} else if (password != password2) { } else if (
password != password2 &&
password != req.session.get("password")
) {
req.session.set("errors", "Passwords don't match"); req.session.set("errors", "Passwords don't match");
res.redirect("/settings"); res.redirect("/settings");
} else { } else {
del = await client.deleteUser(req.session.user, password); //del = await client.deleteUser(req.session.user, password);
del = await got.delete(`${api}/delete`, {
headers: {
Authorization: auth,
Accept: "application/json",
},
});
console.log(del); console.log(del);
if (del == -2) { if (del == -2) {
req.session.set("errors", "Password Wrong"); req.session.set("errors", "Password Wrong");

View file

@ -25,6 +25,21 @@ block content
br br
input.btn.btn-primary(type='submit',value='Submit') input.btn.btn-primary(type='submit',value='Submit')
br br
.card.shadow
h4 Change password
form(method='POST', action='/admin/admpass')
#form-group
label Name:
input.form-control(name='name', type='name')
label New Password:
input.form-control(name='new_pass',type='password')
label Confirm:
input.form-control(name='password2',type='password')
br
input.btn.btn-primary(type='submit',value='Submit')
br
.card.shadow-lg .card.shadow-lg
h4 Check User Balance h4 Check User Balance
form(method='POST', action='/admin/baluser') form(method='POST', action='/admin/baluser')
@ -35,8 +50,8 @@ block content
input.btn.btn-primary(type='submit',value='Submit') input.btn.btn-primary(type='submit',value='Submit')
br br
.card.shadow-lg .card.shadow-lg
h4 Change Balance of User h4 Set Balance of User
form(method='POST', action='/admin/bal') form(method='POST', action='/admin/setbal')
#form-group #form-group
label Username: label Username:
input.form-control(name='name', type='name') input.form-control(name='name', type='name')
@ -45,6 +60,28 @@ block content
br br
input.btn.btn-primary(type='submit',value='Submit') input.btn.btn-primary(type='submit',value='Submit')
br br
.card.shadow-lg
h4 Add Balance to User
form(method='POST', action='/admin/addbal')
#form-group
label Username:
input.form-control(name='name', type='name')
label Add amount:
input.form-control(name='amount', type='number')
br
input.btn.btn-primary(type='submit',value='Submit')
br
.card.shadow-lg
h4 Subtract Balance from User
form(method='POST', action='/admin/subbal')
#form-group
label Username:
input.form-control(name='name', type='name')
label Subtract amount:
input.form-control(name='amount', type='number')
br
input.btn.btn-primary(type='submit',value='Submit')
br
.card.shadow-lg .card.shadow-lg
h4 Delete user h4 Delete user
p This will permanently delete user make sure you get it right p This will permanently delete user make sure you get it right