mirror of
https://github.com/Expand-sys/ccashfrontend
synced 2025-12-15 14:22:14 +11:00
finished
This commit is contained in:
parent
b1cefcce86
commit
6ba054de60
10 changed files with 3356 additions and 461 deletions
1
.dockerignore
Normal file
1
.dockerignore
Normal file
|
|
@ -0,0 +1 @@
|
|||
node_modules
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
module.exports = {
|
||||
ensureAuthenticated: function (req, res, next) {
|
||||
if (req.session.user != undefined) {
|
||||
return next();
|
||||
}
|
||||
req.session.errors = [];
|
||||
req.session.errors.push({ msg: "please login to view this resource" });
|
||||
res.redirect("/login");
|
||||
},
|
||||
};
|
||||
210
index.js
210
index.js
|
|
@ -1,38 +1,37 @@
|
|||
const root = process.env.PWD;
|
||||
const express = require("express");
|
||||
require("pino-pretty");
|
||||
const fastify = require("fastify")({
|
||||
logger: true,
|
||||
//logger: { prettyPrint: true },
|
||||
});
|
||||
const fastifyFlash = require("fastify-flash");
|
||||
|
||||
const path = require("path");
|
||||
|
||||
const got = require("got");
|
||||
const bodyParser = require("body-parser");
|
||||
const { ensureAuthenticated } = require(`${root}/config/auth.js`);
|
||||
const app = express();
|
||||
const url = require("url");
|
||||
const dotenv = require("dotenv");
|
||||
|
||||
const fs = require("fs");
|
||||
const mongoose = require("mongoose");
|
||||
const { CCashClient } = require("ccash-client-js");
|
||||
dotenv.config({ path: ".env" });
|
||||
const { postUser } = require(`${root}/helpers/functions.js`);
|
||||
|
||||
fastify.register(require("fastify-formbody"));
|
||||
fastify.register(require("fastify-static"), {
|
||||
root: path.join(__dirname, "public"),
|
||||
prefix: "/", // optional: default '/'
|
||||
});
|
||||
|
||||
fastify.register(require("fastify-secure-session"), {
|
||||
// the name of the session cookie, defaults to 'session'
|
||||
cookieName: "fuckineedalongasscookieandthiswilldo",
|
||||
cookieName: "session",
|
||||
// adapt this to point to the directory where secret-key is located
|
||||
key: fs.readFileSync(path.join(__dirname, "secret-key")),
|
||||
cookie: {
|
||||
path: "/",
|
||||
// options for setCookie, see https://github.com/fastify/fastify-cookie
|
||||
secure: false,
|
||||
httpOnly: true,
|
||||
},
|
||||
});
|
||||
fastify.register(fastifyFlash);
|
||||
fastify.register(require("point-of-view"), {
|
||||
engine: {
|
||||
pug: require("pug"),
|
||||
|
|
@ -51,17 +50,23 @@ function papy() {
|
|||
}
|
||||
return random;
|
||||
}
|
||||
|
||||
app.post("/setup", async function (req, res) {
|
||||
function validate(req, res, next) {
|
||||
if (!req.session.get("user")) {
|
||||
res.redirect("/login");
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
fastify.post("/setup", async function (req, res) {
|
||||
const { url, secure } = req.body;
|
||||
if (secure) {
|
||||
process.env.SECURE = true;
|
||||
}
|
||||
process.env.BANKAPIURL = url;
|
||||
console.log(process.env.BANKAPIURL);
|
||||
fs.rmSync(`/app/config/.env`);
|
||||
fs.rmSync(`${root}/.env`);
|
||||
fs.writeFileSync(
|
||||
`/app/config/.env`,
|
||||
`${root}/.env`,
|
||||
"BANKAPIURL=" +
|
||||
process.env.BANKAPIURL +
|
||||
"\n" +
|
||||
|
|
@ -74,9 +79,9 @@ app.post("/setup", async function (req, res) {
|
|||
res.redirect("/");
|
||||
});
|
||||
|
||||
fastify.get("/", async function (req, reply) {
|
||||
fastify.get("/", async function (req, res) {
|
||||
if (process.env.SETUP == false || !process.env.SETUP) {
|
||||
reply.view("setup");
|
||||
res.view("setup");
|
||||
} else {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let checkalive;
|
||||
|
|
@ -94,7 +99,7 @@ fastify.get("/", async function (req, reply) {
|
|||
console.log(err);
|
||||
}
|
||||
|
||||
reply.view("index", {
|
||||
res.view("index", {
|
||||
user: req.session.get("user"),
|
||||
admin: req.session.get("admin"),
|
||||
alive: alive,
|
||||
|
|
@ -105,33 +110,28 @@ fastify.get("/", async function (req, reply) {
|
|||
fastify.get(
|
||||
"/BankF",
|
||||
{
|
||||
preValidation: function (req, res, done) {
|
||||
if (req.session.user != undefined) {
|
||||
return done();
|
||||
}
|
||||
req.session.errors = [];
|
||||
req.session.errors.push({ msg: "please login to view this resource" });
|
||||
reply.redirect("/login");
|
||||
},
|
||||
preValidation: [validate],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let successes = req.session.successes;
|
||||
let errors = req.session.errors;
|
||||
req.session.errors = [];
|
||||
let successes = req.session.get("successes");
|
||||
req.session.set("successes", "");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.set("errors", "");
|
||||
let admin;
|
||||
try {
|
||||
admin = req.session.admin;
|
||||
admin = req.session.get("admin");
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
let balance = 0;
|
||||
balance = await client.balance(req.session.user);
|
||||
balance = await client.balance(req.session.get("user"));
|
||||
console.log(balance);
|
||||
let logsent;
|
||||
console.log("start " + Date.now());
|
||||
try {
|
||||
const { user, password } = req.session;
|
||||
const user = req.session.get("user");
|
||||
const password = req.session.get("password");
|
||||
logsent = await client.log(user, password);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
|
|
@ -146,7 +146,7 @@ fastify.get(
|
|||
let currentbal = balance;
|
||||
if (graphlog) {
|
||||
for (i = graphlog.length - 1; i > -1; i--) {
|
||||
if (graphlog[i].from == req.session.user) {
|
||||
if (graphlog[i].from == req.session.get("user")) {
|
||||
currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount);
|
||||
graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]";
|
||||
} else {
|
||||
|
|
@ -165,12 +165,14 @@ fastify.get(
|
|||
if (logsent == null) {
|
||||
logsent = undefined;
|
||||
} else {
|
||||
logsent = await logsent.filter(({ from }) => from === req.session.user);
|
||||
logsent = await logsent.filter(
|
||||
({ from }) => from === req.session.get("user")
|
||||
);
|
||||
}
|
||||
if (logrec == null) {
|
||||
logrec = undefined;
|
||||
} else {
|
||||
logrec = await logrec.filter(({ to }) => to === req.session.user);
|
||||
logrec = await logrec.filter(({ to }) => to === req.session.get("user"));
|
||||
}
|
||||
if (logsent) {
|
||||
for (i in logrec) {
|
||||
|
|
@ -204,52 +206,59 @@ fastify.get(
|
|||
}
|
||||
);
|
||||
|
||||
fastify.post("/sendfunds", async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { amount, name, senderpass } = req.body;
|
||||
req.session.errors = [];
|
||||
req.session.successes = [];
|
||||
let a_name = req.session.user;
|
||||
let result;
|
||||
result = await client.sendFunds(a_name, senderpass, name, amount);
|
||||
console.log(result);
|
||||
if (result == 1) {
|
||||
req.session.successes.push({ msg: "Transfer successful" });
|
||||
//post details
|
||||
res.redirect("/BankF");
|
||||
} 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");
|
||||
fastify.post(
|
||||
"/sendfunds",
|
||||
{
|
||||
preValidation: [validate],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { amount, name, senderpass } = req.body;
|
||||
req.session.set("errors", "");
|
||||
req.session.set("successes", "");
|
||||
let a_name = req.session.get("user");
|
||||
let result;
|
||||
result = await client.sendFunds(a_name, senderpass, name, amount);
|
||||
console.log(result);
|
||||
if (result == 1) {
|
||||
req.session.set("successes", "Transfer successful");
|
||||
//post details
|
||||
res.redirect("/BankF");
|
||||
} else if (result == -1) {
|
||||
req.session.set("errors", "Transfer Unsuccessful: User not Found");
|
||||
res.redirect("/BankF");
|
||||
} else if (result == -2) {
|
||||
req.session.set("errors", "Transfer Unsuccessful: Wrong Password");
|
||||
res.redirect("/BankF");
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
fastify.post("/register", async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
var { name, password, password2 } = req.body;
|
||||
req.session.errors = [];
|
||||
req.session.successes = [];
|
||||
req.session.set("successes", "");
|
||||
req.session.set("errors", "");
|
||||
if (!name || !password || !password2) {
|
||||
req.session.errors.push({ msg: "please fill in all fields" });
|
||||
req.session.set("errors", "please fill in all fields");
|
||||
res.redirect("/register");
|
||||
} else if (password != password2) {
|
||||
req.session.errors.push({ msg: "Passwords don't match" });
|
||||
req.session.set("errors", "Passwords don't match");
|
||||
res.redirect("/register");
|
||||
} else if (password.length < 6) {
|
||||
req.session.errors.push({
|
||||
msg: "Password must be at least 6 characters",
|
||||
});
|
||||
req.session.set("errors", "Password must be at least 6 characters");
|
||||
res.redirect("/register");
|
||||
} else {
|
||||
let checkuser = await postUser(name, password);
|
||||
console.log(checkuser);
|
||||
let checkuser = await client.addUser(name, password);
|
||||
console.log(await checkuser);
|
||||
if (checkuser == -4) {
|
||||
req.session.errors.push({ msg: "Error: Name too long" });
|
||||
req.session.set("errors", "Error: Name too long");
|
||||
res.redirect("/register");
|
||||
} else if (checkuser == -5) {
|
||||
req.session.errors.push({ msg: "Error: User Already Exists" });
|
||||
req.session.set("errors", "Error: User Already Exists");
|
||||
res.redirect("/register");
|
||||
} else {
|
||||
req.session.successes.push({ msg: "Account Created! please Log in" });
|
||||
req.session.set("successes", "Account Created! please Log in");
|
||||
res.redirect("/login");
|
||||
}
|
||||
}
|
||||
|
|
@ -257,10 +266,9 @@ fastify.post("/register", async function (req, res) {
|
|||
|
||||
fastify.post("/login", async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
if (req.session.user) {
|
||||
if (req.session.get("user")) {
|
||||
res.redirect("/");
|
||||
}
|
||||
req.session.destroySession(function (err) {});
|
||||
const { name, password } = req.body;
|
||||
let adminTest;
|
||||
try {
|
||||
|
|
@ -270,64 +278,66 @@ fastify.post("/login", async function (req, res) {
|
|||
}
|
||||
console.log(adminTest);
|
||||
if (adminTest != -2) {
|
||||
req.session.admin = adminTest;
|
||||
req.session.adminp = password;
|
||||
req.session.user = name;
|
||||
req.session.password = password;
|
||||
req.session.set("admin", adminTest);
|
||||
req.session.set("adminp", password);
|
||||
req.session.set("user", name);
|
||||
req.session.set("password", password);
|
||||
res.redirect("/BankF");
|
||||
} else {
|
||||
let verified;
|
||||
verified = await client.verifyPassword(name, password);
|
||||
console.log(verified);
|
||||
if (verified == 1) {
|
||||
req.session.user = name;
|
||||
req.session.password = password;
|
||||
req.session.set("user", name);
|
||||
req.session.set("password", password);
|
||||
res.redirect("/BankF");
|
||||
} else {
|
||||
req.session.errors = [];
|
||||
req.session.errors.push({ msg: "Password wrong" });
|
||||
req.session.set("errors", ["Password wrong"]);
|
||||
res.redirect("/login");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let admin = require("./routes/admin");
|
||||
fastify.all("/admin", admin);
|
||||
fastify.register(require("./routes/admin"), { prefix: "/admin" });
|
||||
|
||||
let settings = require("./routes/settings");
|
||||
fastify.all("/settings", settings);
|
||||
fastify.register(require("./routes/settings"), { prefix: "/settings" });
|
||||
|
||||
fastify.get("/logout", function (req, res) {
|
||||
req.destroySession(function (err) {
|
||||
res.view("login", {
|
||||
random: papy(),
|
||||
});
|
||||
let successes = req.session.get("successes");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.delete();
|
||||
|
||||
req.session.delete();
|
||||
res.view("login", {
|
||||
random: papy(),
|
||||
successes: successes,
|
||||
errors: errors,
|
||||
});
|
||||
});
|
||||
|
||||
fastify.get("/login", function (req, res) {
|
||||
let successes = req.session.successes;
|
||||
let errors = req.session.errors;
|
||||
req.session.destroySession(function (err) {
|
||||
res.view("login", {
|
||||
successes: successes,
|
||||
errors: errors,
|
||||
user: req.session.user,
|
||||
random: papy(),
|
||||
});
|
||||
let successes = req.session.get("successes");
|
||||
req.session.set("successes", "");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.set("errors", "");
|
||||
res.view("login", {
|
||||
successes: successes,
|
||||
errors: errors,
|
||||
user: req.session.get("user"),
|
||||
random: papy(),
|
||||
});
|
||||
});
|
||||
|
||||
fastify.get("/register", function (req, res) {
|
||||
let successes = req.session.successes;
|
||||
req.session.successes = [];
|
||||
let errors = req.session.errors;
|
||||
req.session.errors = [];
|
||||
let successes = req.session.get("successes");
|
||||
req.session.set("successes", "");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.set("errors", "");
|
||||
res.view("register", {
|
||||
errors: errors,
|
||||
successes: successes,
|
||||
user: req.session.user,
|
||||
admin: req.session.admin,
|
||||
errors: errors,
|
||||
user: req.session.get("user"),
|
||||
admin: req.session.get("admin"),
|
||||
random: papy(),
|
||||
});
|
||||
});
|
||||
|
|
|
|||
3041
package-lock.json
generated
3041
package-lock.json
generated
File diff suppressed because it is too large
Load diff
10
package.json
10
package.json
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"@mgcrea/fastify-session": "^0.14.1",
|
||||
"ccash-client-js": "^1.8.1",
|
||||
"connect-flash": "^0.1.1",
|
||||
"dotenv": "^8.2.0",
|
||||
|
|
@ -8,16 +9,25 @@
|
|||
"express-session": "^1.17.1",
|
||||
"express-validator": "5.3.1",
|
||||
"fastify": "^3.18.0",
|
||||
"fastify-auth": "^1.1.0",
|
||||
"fastify-basic-auth": "^2.0.0",
|
||||
"fastify-cookie": "^5.3.1",
|
||||
"fastify-flash": "^2.0.2",
|
||||
"fastify-formbody": "^5.0.0",
|
||||
"fastify-jwt": "^3.0.0",
|
||||
"fastify-jwt-webapp": "^0.11.1",
|
||||
"fastify-plugin": "^3.0.0",
|
||||
"fastify-secure-session": "^2.3.1",
|
||||
"fastify-session": "^5.2.1",
|
||||
"fastify-static": "^4.2.2",
|
||||
"fastify-tls-keygen": "^1.1.0",
|
||||
"got": "^11.8.2",
|
||||
"https": "^1.0.0",
|
||||
"memorystore": "*",
|
||||
"mongoose": "^5.12.5",
|
||||
"path": "^0.12.7",
|
||||
"pem": "^1.14.4",
|
||||
"pino-pretty": "^5.0.2",
|
||||
"point-of-view": "^4.15.0",
|
||||
"pug": "^3.0.2",
|
||||
"url": "^0.11.0",
|
||||
|
|
|
|||
355
routes/admin.js
355
routes/admin.js
|
|
@ -1,184 +1,211 @@
|
|||
const root = process.env.PWD;
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
const path = require("path");
|
||||
const { ensureAuthenticated } = require(`${root}/config/auth.js`);
|
||||
const { checkAdmin } = require(`${root}/config/admin.js`);
|
||||
const pug = require("pug");
|
||||
const flash = require("connect-flash");
|
||||
const expressValidator = require("express-validator");
|
||||
const session = require("express-session");
|
||||
const { postUser } = require(`${root}/helpers/functions.js`);
|
||||
const got = require("got");
|
||||
const MemoryStore = require("memorystore")(session);
|
||||
|
||||
const fs = require("fs");
|
||||
const mongoose = require("mongoose");
|
||||
|
||||
const { CCashClient } = require("ccash-client-js");
|
||||
|
||||
console.log("Sen was here");
|
||||
|
||||
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,
|
||||
errors: errors,
|
||||
successes: successes,
|
||||
marketplace: process.env.MARKETPLACE,
|
||||
random: papy(),
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/user", checkAdmin, async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
req.session.errors = [];
|
||||
req.session.successes = [];
|
||||
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)
|
||||
module.exports = function (fastify, opts, done) {
|
||||
fastify.get(
|
||||
"/",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
function (req, res) {
|
||||
let successes = req.session.get("successes");
|
||||
req.session.set("successes", "");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.set("errors", "");
|
||||
res.view("adminsettings", {
|
||||
user: req.session.get("user"),
|
||||
admin: req.session.get("admin"),
|
||||
errors: errors,
|
||||
successes: successes,
|
||||
random: papy(),
|
||||
});
|
||||
}
|
||||
);
|
||||
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 {
|
||||
req.session.successes.push({ msg: "Account Creation Successful" });
|
||||
}
|
||||
res.redirect("/admin");
|
||||
});
|
||||
|
||||
router.post("/baluser", checkAdmin, async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { name } = req.body;
|
||||
let balance;
|
||||
req.session.successes = [];
|
||||
req.session.errors = [];
|
||||
balance = await client.balance(name);
|
||||
console.log(balance.body);
|
||||
balance = parseInt(balance);
|
||||
if (balance < 0) {
|
||||
req.session.errors.push({ msg: "User not found" });
|
||||
} else {
|
||||
req.session.successes.push({
|
||||
msg: "User: " + name + " has " + balance + " monies",
|
||||
});
|
||||
}
|
||||
res.redirect("/admin");
|
||||
});
|
||||
|
||||
router.post("/bal", checkAdmin, 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.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) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { name, attempt } = req.body;
|
||||
if (attempt != req.session.adminp) {
|
||||
req.session.errors.push({ msg: "Wrong Admin Password" });
|
||||
res.redirect("/admin");
|
||||
} else {
|
||||
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.successes.push({ msg: "User Deletion Successful" });
|
||||
fastify.post(
|
||||
"/user",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { name, init_pass, init_bal, password2 } = req.body;
|
||||
if (!name || !init_pass || !init_bal || !password2) {
|
||||
req.session.set("errors", "please fill in all fields");
|
||||
} else if (init_pass !== password2) {
|
||||
req.session.set("errors", "Passwords don't match");
|
||||
} else if (init_pass.length < 6) {
|
||||
req.session.set("errors", "Password must be at least 6 characters");
|
||||
}
|
||||
let post = await client.adminAddUser(
|
||||
name,
|
||||
req.session.get("adminp"),
|
||||
init_pass,
|
||||
parseInt(init_bal)
|
||||
);
|
||||
console.log(post);
|
||||
if (post == -3) {
|
||||
req.session.set("errors", "Invalid Request");
|
||||
} else if (post == -4) {
|
||||
req.session.set("errors", "Name too long");
|
||||
} else if (post == -5) {
|
||||
req.session.set("errors", "User already exists");
|
||||
} else {
|
||||
req.session.set("successes", "Account Creation Successful");
|
||||
}
|
||||
res.redirect("/admin");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/destroyallsessions", checkAdmin, async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { attempt } = req.body;
|
||||
let adminTest;
|
||||
req.session.errors = [];
|
||||
try {
|
||||
adminTest = await client.adminVerifyPassword(attempt);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
if (adminTest) {
|
||||
req.sessionStore.clear(function (err) {
|
||||
console.log(err);
|
||||
res.redirect("/");
|
||||
});
|
||||
} else {
|
||||
req.session.errors.push({ msg: "failed admin password check" });
|
||||
res.redirect("/admin");
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/changebackend", checkAdmin, async function (req, res) {
|
||||
let { url } = req.body;
|
||||
if (!url.endsWith("/")) {
|
||||
url = url + "/";
|
||||
}
|
||||
process.env.BANKAPIURL = url;
|
||||
fs.writeFileSync(
|
||||
`${root}/.env`,
|
||||
"BANKAPIURL=" +
|
||||
process.env.BANKAPIURL +
|
||||
"\n" +
|
||||
"SECURE=" +
|
||||
process.env.SECURE +
|
||||
"\n" +
|
||||
"MARKETPLACE=" +
|
||||
process.env.MARKETPLACE +
|
||||
"\n" +
|
||||
"MONGO=" +
|
||||
process.env.MONGO +
|
||||
"\nSETUP=true"
|
||||
);
|
||||
fs.mkdirSync(`${root}/tmp`);
|
||||
fs.writeFileSync(`${root}tmp/restart.txt`, "");
|
||||
res.redirect("../");
|
||||
});
|
||||
|
||||
router.post("/close", checkAdmin, async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { attempt } = req.body;
|
||||
let close;
|
||||
close = client.close();
|
||||
res.redirect("../");
|
||||
});
|
||||
function papy() {
|
||||
const rndInt = Math.floor(Math.random() * 1337);
|
||||
let random = false;
|
||||
if (rndInt == 420) {
|
||||
random = true;
|
||||
fastify.post(
|
||||
"/baluser",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { name } = req.body;
|
||||
let balance;
|
||||
req.session.set("successes", "");
|
||||
req.session.set("errors", "");
|
||||
balance = await client.balance(name);
|
||||
console.log(balance.body);
|
||||
balance = parseInt(balance);
|
||||
if (balance < 0) {
|
||||
req.session.set("errors", "User not found");
|
||||
} else {
|
||||
req.session.set(
|
||||
"successes",
|
||||
"User: " + name + " has " + balance + " monies"
|
||||
);
|
||||
}
|
||||
res.redirect("/admin");
|
||||
}
|
||||
);
|
||||
|
||||
fastify.post(
|
||||
"/bal",
|
||||
{
|
||||
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)
|
||||
);
|
||||
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(
|
||||
"/userdelete",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { name, attempt } = req.body;
|
||||
if (attempt != req.session.get("adminp")) {
|
||||
req.session.set("errors", "Wrong Admin Password");
|
||||
res.redirect("/admin");
|
||||
} else {
|
||||
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.set("successes", "User Deletion Successful");
|
||||
res.redirect("/admin");
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
fastify.post(
|
||||
"/changebackend",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
async function (req, res) {
|
||||
let { url } = req.body;
|
||||
if (!url.endsWith("/")) {
|
||||
url = url + "/";
|
||||
}
|
||||
process.env.BANKAPIURL = url;
|
||||
fs.writeFileSync(
|
||||
`${root}/.env`,
|
||||
"BANKAPIURL=" +
|
||||
process.env.BANKAPIURL +
|
||||
"\n" +
|
||||
"SECURE=" +
|
||||
process.env.SECURE +
|
||||
"\n" +
|
||||
"MARKETPLACE=" +
|
||||
process.env.MARKETPLACE +
|
||||
"\n" +
|
||||
"MONGO=" +
|
||||
process.env.MONGO +
|
||||
"\nSETUP=true"
|
||||
);
|
||||
fs.mkdirSync(`${root}/tmp`);
|
||||
fs.writeFileSync(`${root}tmp/restart.txt`, "");
|
||||
res.redirect("../");
|
||||
}
|
||||
);
|
||||
|
||||
fastify.post(
|
||||
"/close",
|
||||
{
|
||||
preValidation: [validateAdmin],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { attempt } = req.body;
|
||||
let close;
|
||||
close = client.close();
|
||||
res.redirect("../");
|
||||
}
|
||||
);
|
||||
|
||||
function validateAdmin(req, res, next) {
|
||||
if (!req.session.get("admin")) {
|
||||
res.redirect("/login");
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
return random;
|
||||
}
|
||||
module.exports = router;
|
||||
function papy() {
|
||||
const rndInt = Math.floor(Math.random() * 1337);
|
||||
let random = false;
|
||||
if (rndInt == 420) {
|
||||
random = true;
|
||||
}
|
||||
return random;
|
||||
}
|
||||
done();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,9 +1,5 @@
|
|||
const root = process.env.PWD;
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
const path = require("path");
|
||||
const { ensureAuthenticated } = require(`${root}/config/auth.js`);
|
||||
const { checkAdmin } = require(`${root}/config/admin.js`);
|
||||
var pug = require("pug");
|
||||
const flash = require("connect-flash");
|
||||
const expressValidator = require("express-validator");
|
||||
|
|
@ -11,60 +7,109 @@ const session = require("express-session");
|
|||
const { postUser } = require(`${root}/helpers/functions.js`);
|
||||
const { CCashClient } = require("ccash-client-js");
|
||||
|
||||
router.get("/", ensureAuthenticated, function (req, res) {
|
||||
let successes = req.session.successes;
|
||||
req.session.successes = [];
|
||||
let errors = req.session.errors;
|
||||
req.session.errors = [];
|
||||
|
||||
res.render("settings", {
|
||||
errors: errors,
|
||||
successes: successes,
|
||||
user: req.session.user,
|
||||
admin: req.session.admin,
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/pass", ensureAuthenticated, async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { attempt, new_pass, password2 } = req.body;
|
||||
let patch;
|
||||
if (attempt == undefined) {
|
||||
attempt = "";
|
||||
}
|
||||
if (!new_pass || !password2) {
|
||||
req.session.errors.push({ msg: "please fill in all fields" });
|
||||
}
|
||||
//check if match
|
||||
if (new_pass != password2) {
|
||||
req.session.errors.push({ msg: "Passwords don't match" });
|
||||
}
|
||||
|
||||
//check if password is more than 6 characters
|
||||
if (new_pass.length < 6) {
|
||||
req.session.errors.push({ msg: "Password must be at least 6 characters" });
|
||||
}
|
||||
if (req.session.errors.length > 0) {
|
||||
console.log(req.session.errors);
|
||||
res.redirect("/settings");
|
||||
function validate(req, res, next) {
|
||||
if (!req.session.get("user")) {
|
||||
res.redirect("/login");
|
||||
} else {
|
||||
patch = await client.changePassword(req.session.user, attempt, new_pass);
|
||||
console.log(patch);
|
||||
if (patch == -2) {
|
||||
req.session.errors.push({
|
||||
msg: "Password Wrong",
|
||||
});
|
||||
res.redirect("/settings");
|
||||
} else {
|
||||
req.destroySession(function (err) {
|
||||
req.session.successes = [];
|
||||
req.session.successes.push({
|
||||
msg: "Change Password Successful, Please Login Again",
|
||||
});
|
||||
res.redirect("/login");
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function (fastify, opts, done) {
|
||||
fastify.get(
|
||||
"/",
|
||||
{
|
||||
preValidation: [validate],
|
||||
},
|
||||
function (req, res) {
|
||||
let successes = req.session.get("successes");
|
||||
req.session.set("successes", "");
|
||||
let errors = req.session.get("errors");
|
||||
req.session.set("errors", "");
|
||||
res.view("settings", {
|
||||
errors: errors,
|
||||
successes: successes,
|
||||
user: req.session.get("user"),
|
||||
admin: req.session.get("admin"),
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
module.exports = router;
|
||||
fastify.post(
|
||||
"/pass",
|
||||
{
|
||||
preValidation: [validate],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { attempt, new_pass, password2 } = req.body;
|
||||
let patch;
|
||||
if (attempt == undefined) {
|
||||
attempt = "";
|
||||
} else 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.user,
|
||||
attempt,
|
||||
new_pass
|
||||
);
|
||||
console.log(patch);
|
||||
if (patch == -2) {
|
||||
req.session.set("errors", "Password Wrong");
|
||||
res.redirect("/settings");
|
||||
} else {
|
||||
req.destroySession(function (err) {
|
||||
req.session.set(
|
||||
"successes",
|
||||
"Change Password Successful, Please Login Again"
|
||||
);
|
||||
res.redirect("/login");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
fastify.post(
|
||||
"/delete",
|
||||
{
|
||||
preValidation: [validate],
|
||||
},
|
||||
async function (req, res) {
|
||||
const client = new CCashClient(process.env.BANKAPIURL);
|
||||
let { password, password2 } = req.body;
|
||||
let del;
|
||||
if (!password || !password2) {
|
||||
req.session.set("errors", "please fill in all fields");
|
||||
res.redirect("/settings");
|
||||
} else if (password != password2) {
|
||||
req.session.set("errors", "Passwords don't match");
|
||||
res.redirect("/settings");
|
||||
} else {
|
||||
del = await client.deleteUser(req.session.user, password);
|
||||
console.log(del);
|
||||
if (del == -2) {
|
||||
req.session.set("errors", "Password Wrong");
|
||||
res.redirect("/settings");
|
||||
} else {
|
||||
req.session.delete();
|
||||
req.session.set(
|
||||
"successes",
|
||||
"Account Deleted, pls dont come back to complain"
|
||||
);
|
||||
res.redirect("/login");
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
done();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -68,16 +68,6 @@ block content
|
|||
br
|
||||
input.btn.btn-warning(type='submit',value='Submit')
|
||||
br
|
||||
.card.shadow-lg
|
||||
h4 Destroy All Sessions
|
||||
form(method='POST', action='/admin/destroyallsessions')
|
||||
#form-group
|
||||
p WARNING THIS WILL DESTROY ALL LOGIN SESSIONS, EVERYONE WILL HAVE TO LOG IN AGAIN
|
||||
label Confirm admin password to DESTROY
|
||||
input.form-control(name='attempt', type='password')
|
||||
br
|
||||
input.btn.btn-danger(type='submit',value='Destroy')
|
||||
br
|
||||
.card.shadow-lg
|
||||
h4 Close Server
|
||||
form(method='POST', action='/admin/close')
|
||||
|
|
|
|||
|
|
@ -39,11 +39,9 @@ html
|
|||
a.nav-link(href='/admin').text-white Admin
|
||||
.container
|
||||
if errors
|
||||
each error, i in errors
|
||||
div(class="alert alert-danger") #{error.msg}
|
||||
div(class="alert alert-danger") #{errors}
|
||||
if successes
|
||||
each success, i in successes
|
||||
div(class="alert alert-success") #{success.msg}
|
||||
div(class="alert alert-success") #{successes}
|
||||
br
|
||||
br
|
||||
block content
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ extends layout
|
|||
block content
|
||||
.container
|
||||
h1 Settings, logged in as: #{user}
|
||||
.card
|
||||
.card.shadow
|
||||
h4 Change password
|
||||
form(method='POST', action='/settings/pass')
|
||||
#form-group
|
||||
|
|
@ -16,3 +16,16 @@ block content
|
|||
input.form-control(name='password2',type='password')
|
||||
br
|
||||
input.btn.btn-primary(type='submit',value='Submit')
|
||||
br
|
||||
br
|
||||
.card.shadow
|
||||
h4 DELETE ACCOUNT
|
||||
p Dont do this unless you want your account deleted, hate that i have to put warnings on this but there is no undo
|
||||
form(method='POST', action='/settings/delete')
|
||||
#form-group
|
||||
label Current Password:
|
||||
input.form-control(name='password',type='password')
|
||||
label Confirm:
|
||||
input.form-control(name='password2',type='password')
|
||||
br
|
||||
input.btn.btn-danger(type='submit',value='DELETE')
|
||||
|
|
|
|||
Loading…
Reference in a new issue