major patch and update, no visual changes to look

This commit is contained in:
Expand 2023-11-29 23:23:43 +11:00
parent 51eb7901f8
commit e2b73bd19d
10 changed files with 308 additions and 322 deletions

BIN
bun.lockb Executable file

Binary file not shown.

316
index.js
View file

@ -7,58 +7,46 @@ const fastify = require("fastify")({
logger: false, logger: false,
}); });
const fastifyFlash = require("fastify-flash"); const fastifyFlash = require("@fastify/flash");
const path = require("path"); const path = require("path");
const got = require("got");
const url = require("url"); const url = require("url");
const fs = require("fs"); const fs = require("fs");
fastify.register(require("@fastify/cookie"));
fastify.register(require("fastify-formbody")); fastify.register(require("@fastify/formbody"));
fastify.register(require("fastify-static"), { fastify.register(require("@fastify/static"), {
root: path.join(__dirname, "public"), root: path.join(__dirname, "public"),
prefix: "/", // optional: default '/' prefix: "/", // optional: default '/'
}); });
fastify.register(require("fastify-secure-session"), { fastify.register(require("@fastify/session"), {
// the name of the session cookie, defaults to 'session' // the name of the session cookie, defaults to 'session'
cookieName: "session", cookieName: "session",
// adapt this to point to the directory where secret-key is located // adapt this to point to the directory where secret-key is located
key: fs.readFileSync(path.join(__dirname, "secret-key")), secret: "iohadwjbnfwadjuobufwhaiojnwfiklndlioaknsiohiuhr2890u4902u94u219j4oip12jiopj",
Cookie: { cookie: {
path: "/", path: "/",
// options for setCookie, see https://github.com/fastify/fastify-cookie // options for setCookie, see https://github.com/fastify/fastify-cookie
signed: true,
secure: "auto", secure: "auto",
httpOnly: true, httpOnly: true,
overwrite: true,
sameSite: "none", sameSite: "none",
}, },
}); });
fastify.register(fastifyFlash); fastify.register(fastifyFlash);
fastify.register(require("point-of-view"), { fastify.register(require("@fastify/view"), {
engine: { engine: {
pug: require("pug"), pug: require("pug"),
}, },
defaultContext: { defaultContext: {
random: papy(),
}, },
root: path.join(__dirname, "views"), root: path.join(__dirname, "views"),
}); });
const api = `${process.env.BANKAPIURL}`; const api = `${process.env.BANKAPIURL}`;
function papy() {
const rndInt = Math.floor(Math.random() * 1337);
let random = false;
if (rndInt == 420) {
random = true;
}
return random;
}
function validate(req, res, next) { function validate(req, res, next) {
if (req.session.get("user")) { if (req.session.get("user") != null) {
next(); next();
} else { } else {
res.redirect("/login"); res.redirect("/login");
@ -87,34 +75,30 @@ fastify.post("/setup", async function (req, res) {
}); });
fastify.get("/", async function (req, res) { fastify.get("/", async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); req.session.errors = "";
if (process.env.SETUP == false || !process.env.SETUP) { console.log(`${api}/api/properties`);
res.view("setup"); let checkalive = await fetch(`${api}/api/properties`, {
} else { headers: {
console.log(`${api}/api/properties`); Accept: "application/json",
let checkalive = await got(`${api}/api/properties`, { },
headers: { });
Accept: "application/json", let alive = false
}, if (checkalive.ok) {
}); alive = true;
if (checkalive) {
alive = true;
} else {
alive = false;
}
res.view("index", {
user: req.session.get("user"),
admin: req.session.get("admin"),
alive: alive,
url: process.env.BANKAPIURL,
errors: errors,
successes: successes,
});
} }
return res.view("index", {
user: req.session.user,
admin: req.session.admin,
alive: alive,
url: process.env.BANKAPIURL,
errors: errors,
successes: successes,
});
}); });
fastify.get( fastify.get(
"/BankF", "/BankF",
@ -122,44 +106,40 @@ fastify.get(
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); req.session.errors = "";
let admin; let admin;
try { try {
admin = req.session.get("admin"); admin = req.session.admin;
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }
let balance = 0; let balance = 0;
const user = req.session.get("user"); const user = req.session.user;
const password = req.session.get("password"); const password = req.session.password;
const auth = req.session.get("b64"); const auth = req.session.b64;
balance = await got(`${api}/api/v1/user/balance`, { balance = await fetch(`${api}/api/v1/user/balance?name=${user}`, {
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "*/*",
},
searchParams: {
name: user,
}, },
}); });
balance = parseInt(balance.body); balance = await parseInt(await balance.text());
console.log(balance); //console.log(balance);
console.log("start " + Date.now()); console.log("start " + Date.now());
let log = await got(`${api}/api/v2/user/log`, { let log = await fetch(`${api}/api/v2/user/log`, {
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json"
}, },
}); });
let transactionlog = [] let transactionlog = []
let currentbal = balance; log = await log.json()
log = JSON.parse(log.body);
let final = []
let final2 = [];
/*if(log != null){ /*if(log != null){
let graphlog = log.reverse(); let graphlog = log.reverse();
@ -195,12 +175,8 @@ fastify.get(
}*/ }*/
if(log){ if(log){
log.reverse()
for(i = 0; i < log.length; i++){
for(i = 0; i < log.length; i++){
if(log[i].amount > 0){ if(log[i].amount > 0){
let absol = Math.abs(log[i].amount) let absol = Math.abs(log[i].amount)
let date = new Date(log[i].time * 1000) let date = new Date(log[i].time * 1000)
@ -220,14 +196,14 @@ fastify.get(
//let stringgraphdata = JSON.stringify(final2) //let stringgraphdata = JSON.stringify(final2)
//console.log(stringgraphdata) //console.log(stringgraphdata)
//let graphdata = stringgraphdata.slice(1,stringgraphdata.length-1) //let graphdata = stringgraphdata.slice(1,stringgraphdata.length-1)
res.view("bankf", { return res.view("bankf", {
transactionlog: transactionlog, transactionlog: transactionlog,
//maxgraph: maxgraph, //maxgraph: maxgraph,
//graphdata: graphdata, //graphdata: graphdata,
user: req.session.get("user"), user: req.session.user,
balance: balance, balance: balance,
admin: req.session.get("admin"), admin: req.session.admin,
sucesses: successes, successes: successes,
errors: errors, errors: errors,
alive: true, alive: true,
}); });
@ -240,126 +216,148 @@ fastify.post(
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
let { amount, name, senderpass } = req.body; let { amount, name } = req.body;
req.session.set("errors", ""); req.session.errors = "";
req.session.set("successes", ""); req.session.successes = "";
let result; let result;
let auth = req.session.get("b64"); let auth = req.session.b64;
try { try {
result = await got.post(`${api}/api/v1/user/transfer`, { result = await fetch(`${api}/api/v1/user/transfer`, {
method: "POST",
headers: { headers: {
Authorization: auth,
Accept: "application/json", Accept: "application/json",
Authorization: auth,
"Content-Type": "application/json"
}, },
json: { body: JSON.stringify({
name: name, "name": name,
amount: parseInt(amount), "amount": parseInt(amount),
}, }),
}); });
} catch (e) { } catch (e) {
req.session.set("errors", `${e}`); console.log(e)
req.session.errors = `${e}`;
} }
if (result) { console.log(result)
req.session.set("successes", "Transfer successful"); console.log(await result.text())
if (result.ok) {
req.session.successes = "Transfer successful";
//post details //post details
} }
res.redirect("/BankF"); return res.redirect("/BankF");
} }
); );
fastify.post("/register", async function (req, res) { fastify.post("/register", async function (req, res) {
var { name, password, password2 } = req.body; var { name, password, password2 } = req.body;
req.session.set("successes", ""); req.session.successes = "";
req.session.set("errors", ""); req.session.errors = "";
if (!name || !password || !password2) { if (!name || !password || !password2) {
req.session.set("errors", "please fill in all fields"); req.session.errors = "please fill in all fields";
res.redirect("/register"); return res.redirect("/register");
} else if (password != password2) { } else if (password != password2) {
req.session.set("errors", "Passwords don't match"); req.session.errors = "Passwords don't match";
res.redirect("/register"); return res.redirect("/register");
} else if (password.length < 6) { } else if (password.length < 6) {
req.session.set("errors", "Password must be at least 6 characters"); req.session.errors = "Password must be at least 6 characters";
res.redirect("/register"); return res.redirect("/register");
} else { } else {
//let checkuser = await client.addUser(name, password); //let checkuser = await client.addUser(name, password);
try { try {
let checkuser = await got.post(`${api}/api/v1/user/register`, { let checkuser = await fetch(`${api}/api/v1/user/register`, {
method: "POST",
headers: { headers: {
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
json: { body: JSON.stringify({
name: `${name}`, "name": `${name}`,
pass: `${password}`, "pass": `${password}`,
}, }),
}); });
if (checkuser) { if (checkuser.ok) {
req.session.set("successes", "Account Created! please Log in"); req.session.successes = "Account Created! please Log in";
} }
console.log(checkuser)
} catch (e) { } catch (e) {
console.log(e); console.log(e);
req.session.set("errors", `${e.response.body}`); req.session.errors = `${await e.text()}`;
console.log(e.response.body); console.log(e);
return res.redirect("/register")
} }
res.redirect("/register"); return res.redirect("/login");
} }
}); });
fastify.post("/login", async function (req, res) { fastify.post("/login", async function (req, res) {
if (req.session.get("user")) { if (req.session.get("user")) {
res.redirect("/"); return res.redirect("/");
} }
const { name, password, score, success } = req.body; const { name, password } = req.body;
console.log(success, score) console.log(name,password)
if( score <= 0.2 && success == true){ /*if( score <= 0.2 && success == true){
req.session.set("errors", "failed captcha") req.session.set("errors", "failed captcha")
res.redirect("/login") return res.redirect("/login")
} }*/
let auth = Buffer.from(`${name}:${password}`).toString('base64'); let auth = Buffer.from(`${name}:${password}`).toString('base64');
auth = `Basic ${auth}`; auth = `Basic ${auth}`;
console.log(auth)
let adminTest; let adminTest;
try { try {
adminTest = await got.post(`${api}/api/v1/admin/verify_account`, { adminTest = await fetch(`${api}/api/v1/admin/verify_account`, {
method: "POST",
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
}, },
}); });
adminTest = JSON.parse(adminTest.statusCode); adminTest = JSON.parse(adminTest.ok);
} catch (e) { } catch (e) {
console.log(e.response.body); console.log(`${e.text()}`);
console.log("yeet") console.log("yeet")
} }
console.log(adminTest); console.log(adminTest);
if (adminTest == 204) { if (adminTest) {
req.session.set("b64", auth); req.session.b64 = auth;
req.session.set("admin", adminTest); req.session.admin = adminTest;
req.session.set("user", name); req.session.user = name;
req.session.set("password", password); req.session.password = password;
return res.redirect("/BankF");
} else { } else {
let verified; let verified;
try { try {
verified = await got.post(`${api}/api/v1/user/verify_password`, { verified = await fetch(`${api}/api/v1/user/verify_password`, {
method: "POST",
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json"
}, },
}); });
verified = JSON.parse(verified.statusCode); console.log(verified)
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); console.log(e);
console.log(e.response.body);
} }
if (verified) { if (verified.ok == true) {
req.session.set("b64", auth); req.session.b64 = auth;
req.session.set("user", name); req.session.user = name;
req.session.set("password", password); req.session.password = password;
return res.redirect("/BankF");
} else{
req.session.errors = await verified.text()
return res.redirect("/login");
} }
} }
res.redirect("/BankF");
}); });
fastify.register(require("./routes/admin"), { prefix: "/admin" }); fastify.register(require("./routes/admin"), { prefix: "/admin" });
@ -367,21 +365,20 @@ 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) {
let checkalive = await got(`${api}/api/properties`, { let checkalive = await fetch(`${api}/api/properties`, {
headers: { headers: {
Accept: "application/json", Accept: "application/json",
}, },
}); });
if (checkalive) { if (checkalive.ok) {
alive = true; alive = true;
} else { } else {
alive = false; alive = false;
} }
let successes = req.session.get("successes"); let successes = req.session.successes;
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.delete(); req.session.destroy();
res.view("login", { return res.view("login", {
random: papy(),
successes: successes, successes: successes,
errors: errors, errors: errors,
alive: alive, alive: alive,
@ -389,52 +386,51 @@ fastify.get("/logout", async function (req, res) {
}); });
fastify.get("/login", async function (req, res) { fastify.get("/login", async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); console.log(req.session.errors)
req.session.serrors = "";
//let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/api/properties`, { let checkalive = await fetch(`${api}/api/properties`, {
headers: { headers: {
Accept: "application/json", Accept: "application/json",
}, },
}); });
if (checkalive) { if (checkalive.ok) {
alive = true; alive = true;
} else { } else {
alive = false; alive = false;
} }
res.view("login", { return res.view("login", {
successes: successes, successes: successes,
errors: errors, errors: errors,
user: req.session.get("user"), user: req.session.user,
random: papy(),
alive: alive, alive: alive,
}); });
}); });
fastify.get("/register", async function (req, res) { fastify.get("/register", async function (req, res) {
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); req.session.errors = "";
//let checkalive = await client.ping(); //let checkalive = await client.ping();
let checkalive = await got(`${api}/api/properties`, { let checkalive = await fetch(`${api}/api/properties`, {
headers: { headers: {
Accept: "application/json", Accept: "application/json",
}, },
}); });
if (checkalive) { if (checkalive.ok) {
alive = true; alive = true;
} else { } else {
alive = false; alive = false;
} }
res.view("register", { return res.view("register", {
successes: successes, successes: successes,
errors: errors, errors: errors,
user: req.session.get("user"), user: req.session.user,
admin: req.session.get("admin"), admin: req.session.admin,
random: papy(),
alive: alive, alive: alive,
}); });
}); });
@ -442,7 +438,7 @@ process.on("SIGINT", function () {
process.exit(); process.exit();
}); });
fastify.listen(process.env.PORT || 3000, "0.0.0.0", function (err, address) { fastify.listen({ port: process.env.PORT || 3000, host: '0.0.0.0' }, function (err, address) {
if (err) { if (err) {
fastify.log.error(err); fastify.log.error(err);
process.exit(1); process.exit(1);

View file

@ -1,23 +1,21 @@
{ {
"dependencies": { "dependencies": {
"@mgcrea/fastify-session": "^0.14.1", "@fastify/cookie": "^9.1.0",
"dotenv": "^8.2.0", "@fastify/flash": "^5.1.0",
"@fastify/formbody": "^7.4.0",
"@fastify/secure-session": "^7.1.0",
"@fastify/session": "^10.5.0",
"@fastify/static": "^6.11.2",
"@fastify/view": "^8.2.0",
"dotenv": "^16.3.1",
"express-validator": "^6.14.2", "express-validator": "^6.14.2",
"fastify": "^3.18.0", "fastify": "^4.24.2",
"fastify-cookie": "^5.3.1",
"fastify-flash": "^2.0.2",
"fastify-formbody": "^5.0.0",
"fastify-plugin": "^3.0.0",
"fastify-secure-session": "^2.3.1",
"fastify-static": "^4.2.2",
"fastify-tls-keygen": "^1.1.0", "fastify-tls-keygen": "^1.1.0",
"got": "^11.8.2",
"https": "^1.0.0", "https": "^1.0.0",
"path": "^0.12.7", "path": "^0.12.7",
"pino-pretty": "^5.0.2", "pino-pretty": "^10.2.3",
"point-of-view": "^4.15.0",
"pug": "^3.0.2", "pug": "^3.0.2",
"url": "^0.11.0" "url": "^0.11.3"
}, },
"name": "ccashfrontend", "name": "ccashfrontend",
"description": "", "description": "",
@ -34,7 +32,10 @@
}, },
"homepage": "https://github.com/Expand-sys/ccashfrontend#readme", "homepage": "https://github.com/Expand-sys/ccashfrontend#readme",
"engines": { "engines": {
"node": "16.x" "node": "18.x"
}, },
"build": {} "build": {},
"scripts": {
"start": "node index.js"
}
} }

View file

@ -1,12 +1,12 @@
const root = process.env.PWD; const root = process.env.PWD;
const path = require("path"); const path = require("path");
const pug = require("pug"); const pug = require("pug");
const got = require("got");
const fs = require("fs"); const fs = require("fs");
const api = process.env.BANKAPIURL; 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(
"/", "/",
@ -14,7 +14,7 @@ module.exports = function (fastify, opts, done) {
preValidation: [validateAdmin], preValidation: [validateAdmin],
}, },
async function (req, res) { async function (req, res) {
let checkalive = await got(`${api}/api/properties`, { let checkalive = await fetch(`${api}/api/properties`, {
headers: { headers: {
Accept: "application/json", Accept: "application/json",
}, },
@ -24,16 +24,15 @@ module.exports = function (fastify, opts, done) {
} else { } else {
alive = false; alive = false;
} }
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); req.session.errors = "";
res.view("adminsettings", { return res.view("adminsettings", {
user: req.session.get("user"), user: req.session.user,
admin: req.session.get("admin"), admin: req.session.admin,
errors: errors, errors: errors,
successes: successes, successes: successes,
random: papy(),
alive: alive, alive: alive,
}); });
} }
@ -47,30 +46,32 @@ module.exports = function (fastify, opts, done) {
async function (req, res) { async function (req, res) {
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.errors = "please fill in all fields";
} else if (init_pass !== password2) { } else if (init_pass !== password2) {
req.session.set("errors", "Passwords don't match"); req.session.errors = "Passwords don't match";
} }
let post; let post;
try { try {
post = await got.post(`${api}/api/v1/admin/user/register`, { post = await fetch(`${api}/api/v1/admin/user/register`, {
method: 'POST',
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: req.session.b64,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
json: { body: JSON.stringify({
name: name, "name": name,
amount: parseInt(init_bal), "amount": parseInt(init_bal),
pass: init_pass, "pass": init_pass,
}, }),
}); });
post = post.statusCode; post = post.ok;
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e.text()}`;
console.log(e.response.body); console.log(e.text());
} }
if (post) { if (post) {
req.session.set("successes", `User ${name} registered.`); req.session.successes = `User ${name} registered.`;
} }
res.redirect("/admin"); res.redirect("/admin");
} }
@ -84,31 +85,29 @@ module.exports = function (fastify, opts, done) {
async function (req, res) { async function (req, res) {
let { name } = req.body; let { name } = req.body;
let balance; let balance;
req.session.set("successes", ""); req.session.successes = "";
req.session.set("errors", ""); req.session.errors = "";
let responsecode; let responsecode;
try { try {
balance = await got(`${api}/api/v1/user/balance`, { balance = await fetch(`${api}/api/v1/user/balance`, {
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: req.session.b64,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
searchParams: { searchParams: {
name: name, "name": name,
}, },
}); });
balance = parseInt(balance.body); balance = parseInt(balance.body);
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e}`;
console.log(e.response.body); console.log(e);
} }
console.log(balance); console.log(balance);
if (balance || balance == 0) { if (balance || balance == 0) {
req.session.set( req.session.successes = "User: " + name + " has " + balance + " CCash";
"successes",
"User: " + name + " has " + balance + " diarrhea dollars"
);
} }
res.redirect("/admin"); res.redirect("/admin");
} }
@ -122,28 +121,32 @@ module.exports = function (fastify, opts, done) {
async function (req, res) { async function (req, res) {
let { name, amount } = req.body; let { name, amount } = req.body;
let patch; let patch;
req.session.successes = []; req.session.successes = ""
req.session.errors = []; req.session.errors = ""
console.log(name, amount)
try { try {
patch = await got.patch(`${api}/api/v1/admin/set_balance`, { patch = await fetch(`${api}/api/v1/admin/set_balance`, {
method: 'PATCH',
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: `${req.session.b64}`,
Accept: "application/json", Accept: "*/*",
}, "Content-Type": "application/json",
json: {
name: name,
amount: parseInt(amount),
}, },
body: JSON.stringify({
"name": `${name}`,
"amount": parseInt(amount),
}),
}); });
patch = patch.statusCode; console.log(patch, patch.blob())
patch = patch.ok;
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = e;
console.log(e.response.body); console.log(e);
} }
console.log(patch); console.log(patch);
if (patch) { if (patch) {
req.session.set("successes", "Change Funds Successful"); req.session.successes = "Change Funds Successful";
} }
res.redirect("/admin"); res.redirect("/admin");
} }
@ -162,23 +165,25 @@ module.exports = function (fastify, opts, done) {
amount = parseInt(amount, 10) amount = parseInt(amount, 10)
console.log(amount) console.log(amount)
try { try {
patch = await got.post(`${api}/api/v1/admin/impact_balance`, { patch = await fetch(`${api}/api/v1/admin/impact_balance`, {
method: 'POST',
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: req.session.b64,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
json: { body: JSON.stringify({
name: name, "name": name,
amount: amount, "amount": amount,
}, }),
}); });
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e}`;
console.log(e.response.body); console.log(e);
} }
if (patch) { if (patch) {
req.session.set("errors", "") req.session.errors = ""
req.session.set("successes", "Change Funds Successful"); req.session.successes = "Change Funds Successful";
} }
res.redirect("/admin"); res.redirect("/admin");
} }
@ -195,25 +200,27 @@ module.exports = function (fastify, opts, done) {
if (new_pass == password2) { if (new_pass == password2) {
try { try {
patch = await got.patch(`${api}/api/v1/admin/user/change_password`, { patch = await fetch(`${api}/api/v1/admin/user/change_password`, {
method: 'PATCH',
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: req.session.b64,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
json: { body: JSON.stringify({
name: name, "name": name,
pass: new_pass, "pass": new_pass,
}, }),
}); });
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e}`;
console.log(e.response.body); console.log(e);
} }
if (patch) { if (patch) {
req.session.set("successes", "Change Password Successful"); req.session.successes = "Change Password Successful";
} }
} else { } else {
req.session.set("errors", `Passwords dont match`); req.session.errors = `Passwords dont match`;
} }
res.redirect("/admin"); res.redirect("/admin");
@ -228,25 +235,27 @@ module.exports = function (fastify, opts, done) {
async function (req, res) { async function (req, res) {
let { name, attempt } = req.body; let { name, attempt } = req.body;
if (attempt != req.session.get("adminp")) if (attempt != req.session.adminp)
try { try {
let deleteUser = await got.delete(`${api}/api/v1/admin/user/delete`, { let deleteUser = await fetch(`${api}/api/v1/admin/user/delete`, {
method: 'DELETE',
headers: { headers: {
Authorization: req.session.get("b64"), Authorization: req.session.b64,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
json: { body: JSON.stringify({
name: name, "name": name,
}, }),
}); });
deleteUser = deleteUser.statusCode; deleteUser = deleteUser.statusCode;
console.log(deleteUser); console.log(deleteUser);
if (deleteUser) { if (deleteUser) {
req.session.set("successes", "User Deletion Successful"); req.session.successes = "User Deletion Successful";
} }
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e}`;
console.log(e.response.body); console.log(e);
} }
res.redirect("/admin"); res.redirect("/admin");
@ -292,43 +301,37 @@ module.exports = function (fastify, opts, done) {
}, },
async function (req, res) { async function (req, res) {
let { attempt } = req.body; let { attempt } = req.body;
let name = req.session.get("user"); let name = req.session.user;
let close; let close;
//close = client.close(); //close = client.close();
let auth = btoa(`${name}:${attempt}`); let auth = btoa(`${name}:${attempt}`);
auth = `Basic ${auth}`; auth = `Basic ${auth}`;
try { try {
close = got.post(`${api}/api/v1/admin/shutdown`, { close = fetch(`${api}/api/v1/admin/shutdown`, {
method: 'POST',
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json",
}, },
}); });
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); req.session.errors = `${e}`;
console.log(e.response.body); console.log(e);
} }
if (close) { if (close) {
req.session.set("successes", "Closed instance"); req.session.successes = "Closed instance";
} }
res.redirect("../"); res.redirect("../");
} }
); );
function validateAdmin(req, res, next) { function validateAdmin(req, res, next) {
if (!req.session.get("admin")) { if (!req.session.admin) {
res.redirect("/login"); res.redirect("/login");
} else { } else {
next(); next();
} }
} }
function papy() {
const rndInt = Math.floor(Math.random() * 1337);
let random = false;
if (rndInt == 420) {
random = true;
}
return random;
}
done(); done();
}; };

View file

@ -2,7 +2,6 @@ const root = process.env.PWD;
const path = require("path"); const path = require("path");
var pug = require("pug"); var pug = require("pug");
const got = require("got");
function validate(req, res, next) { function validate(req, res, next) {
if (!req.session.get("user")) { if (!req.session.get("user")) {
res.redirect("/login"); res.redirect("/login");
@ -19,7 +18,7 @@ module.exports = function (fastify, opts, done) {
preValidation: [validate], preValidation: [validate],
}, },
async function (req, res) { async function (req, res) {
let checkalive = await got(`${api}/api/properties`, { let checkalive = await fetch(`${api}/api/properties`, {
headers: { headers: {
Accept: "application/json", Accept: "application/json",
}, },
@ -29,15 +28,15 @@ module.exports = function (fastify, opts, done) {
} else { } else {
alive = false; alive = false;
} }
let successes = req.session.get("successes"); let successes = req.session.successes;
req.session.set("successes", ""); req.session.successes = "";
let errors = req.session.get("errors"); let errors = req.session.errors;
req.session.set("errors", ""); req.session.errors = "";
res.view("settings", { return res.view("settings", {
errors: errors, errors: errors,
successes: successes, successes: successes,
user: req.session.get("user"), user: req.session.user,
admin: req.session.get("admin"), admin: req.session.admin,
alive: true, alive: true,
}); });
} }
@ -57,45 +56,43 @@ module.exports = function (fastify, opts, done) {
if (attempt == undefined) { if (attempt == undefined) {
attempt = ""; attempt = "";
} else if (!new_pass || !password2) { } else if (!new_pass || !password2) {
req.session.set("errors", "please fill in all fields"); req.session.errors = "please fill in all fields";
res.redirect("/settings"); res.redirect("/settings");
} else if (new_pass != password2) { } else if (new_pass != password2) {
req.session.set("errors", "Passwords don't match"); req.session.errors = "Passwords don't match";
res.redirect("/settings"); res.redirect("/settings");
} else if (new_pass.length < 6) { } else if (new_pass.length < 6) {
req.session.set("errors", "Password must be at least 6 characters"); req.session.errors = "Password must be at least 6 characters";
res.redirect("/settings"); res.redirect("/settings");
} else { } else {
try { try {
let name = req.session.get("user"); let name = req.session.user;
let auth = btoa(`${name}:${attempt}`); let auth = btoa(`${name}:${attempt}`);
auth = `Basic ${auth}`; auth = `Basic ${auth}`;
patch = await got.patch(`${api}/api/v1/user/change_password`, { patch = await fetch(`${api}/api/v1/user/change_password`, {
method: 'PATCH',
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json"
}, },
json: { body: JSON.stringify({
pass: new_pass, "pass": new_pass,
}, }),
}); });
} catch (e) { } catch (e) {
console.log(e) //req.session.set("errors", `${e.response.body}`);
req.session.set("errors", `${e.response.body}`); console.log(e);
console.log(e.response.body);
} }
console.log(patch);
if (patch == -2) { if (patch == -2) {
req.session.set("errors", "Password Wrong"); req.session.errors = "Password Wrong";
res.redirect("/settings"); return res.redirect("/settings");
} else { } else {
req.session.delete(); req.session.destroy();
req.session.set( //req.session.successes = "Change Password Successful, Please Login Again";
"successes", return res.redirect("/login");
"Change Password Successful, Please Login Again"
);
res.redirect("/login");
} }
} }
} }
@ -111,37 +108,35 @@ module.exports = function (fastify, opts, done) {
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.errors = "please fill in all fields";
res.redirect("/settings"); res.redirect("/settings");
} else if ( } else if (
password != password2 && password != password2 &&
password != req.session.get("password") password != req.session.password
) { ) {
req.session.set("errors", "Passwords don't match"); req.session.errors = "Passwords don't match";
res.redirect("/settings"); res.redirect("/settings");
} else { } else {
let name = req.session.get("user"); let name = req.session.user;
let auth = btoa(`${name}:${password}`); let auth = btoa(`${name}:${password}`);
auth = `Basic ${auth}`; auth = `Basic ${auth}`;
try { try {
del = await got.delete(`${api}/api/v1/user/delete`, { del = await fetch(`${api}/api/v1/user/delete`, {
method: 'DELETE',
headers: { headers: {
Authorization: auth, Authorization: auth,
Accept: "application/json", Accept: "application/json",
"Content-Type": "application/json"
}, },
}); });
} catch (e) { } catch (e) {
req.session.set("errors", `${e.response.body}`); //req.session.set("errors", `${e}`);
console.log(e.response.body); console.log(e);
} }
console.log(del); console.log(del);
if (del) { if (del) {
req.session.delete(); req.session.destroy();
req.session.set(
"successes",
"Account Deleted, pls dont come back to complain"
);
} }
res.redirect("/"); res.redirect("/");
} }

View file

@ -1 +1 @@
Öƒ”Qþ;¶àLÛ±iÚÇôâgoÙþ¦Y;vØ)ßû2” ,² ·<>Έ²,Σχ±<CF87>¨EV<0F>΅Σ<CE85>lάcSή<Αν

View file

@ -4,7 +4,7 @@ extends layout
block content block content
.container .container
h1 Settings, logged in as: #{user} h1 Settings, logged in as: #{user}
if admin == 204 if admin
br br
.card.shadow-lg .card.shadow-lg
center center

View file

@ -24,11 +24,6 @@ block content
input.form-control-lg.shadow(name='name', type='text') input.form-control-lg.shadow(name='name', type='text')
br br
br br
label Your Password:
br
input.form-control-lg.shadow(name='senderpass', type='password')
br
br
input.btn.btn-primary(type='submit', value='Submit') input.btn.btn-primary(type='submit', value='Submit')
.col-8 .col-8
.card .card

View file

@ -6,11 +6,7 @@ html
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
link(rel="preconnect" href="https://fonts.gstatic.com") link(rel="preconnect" href="https://fonts.gstatic.com")
link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet") link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet")
link(rel='stylesheet' href='/css/style.css')
if random
link(rel='stylesheet' href='/css/papy.css')
if !random
link(rel='stylesheet' href='/css/style.css')
meta(name='viewport', content='width=device-width, initial-scale=1.0') meta(name='viewport', content='width=device-width, initial-scale=1.0')
body body
nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg
@ -44,13 +40,13 @@ html
a.nav-link(href='/BankF').text-white Bank a.nav-link(href='/BankF').text-white Bank
li.nav-item li.nav-item
a.nav-link(href='/settings').text-white Settings a.nav-link(href='/settings').text-white Settings
if admin == 204 if admin
li.nav-item li.nav-item
a.nav-link(href='/admin').text-white Admin a.nav-link(href='/admin').text-white Admin
.container .container
.container(style="min-height: 3vh") .container(style="min-height: 3vh")
if errors if errors
div(class="alert alert-danger") #{errors} div(class="alert alert-danger") #{errors}
if successes if successes
div(class="alert alert-success") #{successes} div(class="alert alert-success") #{successes}
br br

View file

@ -9,7 +9,7 @@ block content
h1.text-black Login h1.text-black Login
hr hr
p p
form(method='POST', action='/login') form(id="login" method='POST', action='/login')
#form-group #form-group
label Username: label Username:
input.form-control(name='name', type='text') input.form-control(name='name', type='text')
@ -20,6 +20,6 @@ block content
br br
button.btn.btn-primary(data-action='submit') Submit button.btn.btn-primary(type="submit" form="login" action='submit') Submit
.col-sm .col-sm