From ce057d64e7825bf76c397a48a4c15023b256bfdf Mon Sep 17 00:00:00 2001 From: Expand-sys Date: Mon, 24 May 2021 10:56:21 +1000 Subject: [PATCH] did some linting, and added a easter egg --- index.js | 702 ++++++++++++++++++++++-------------------- package-lock.json | 364 +--------------------- package.json | 3 +- public/css/papy.css | 129 ++++++++ public/css/style.css | 1 + routes/admin.js | 402 +++++++++++++----------- routes/marketplace.js | 342 ++++++++++---------- routes/settings.js | 102 +++--- views/layout.pug | 5 +- 9 files changed, 964 insertions(+), 1086 deletions(-) create mode 100644 public/css/papy.css diff --git a/index.js b/index.js index 9b1320c..5e4bd7f 100644 --- a/index.js +++ b/index.js @@ -1,449 +1,497 @@ -const express = require('express'); -const path = require('path'); -const https = require('https') -const got = require('got') -const bodyParser = require('body-parser') -const expressValidator = require('express-validator'); -const flash = require ('connect-flash'); -const session = require('express-session'); -const {postUser} = require('./helpers/functions.js') -const {ensureAuthenticated} = require("./config/auth.js") +const express = require("express"); +const path = require("path"); +const https = require("https"); +const got = require("got"); +const bodyParser = require("body-parser"); +const expressValidator = require("express-validator"); +const flash = require("connect-flash"); +const session = require("express-session"); +const { postUser } = require("./helpers/functions.js"); +const { ensureAuthenticated } = require("./config/auth.js"); const app = express(); -const MemoryStore = require('memorystore')(session) -const url = require('url') -const dotenv = require('dotenv'); -const fs = require('fs'); -let Log = require('./schemas/log.js'); -const mongoose = require('mongoose') +const MemoryStore = require("memorystore")(session); +const url = require("url"); +const dotenv = require("dotenv"); +const fs = require("fs"); +let Log = require("./schemas/log.js"); +const mongoose = require("mongoose"); dotenv.config(); //mongodb connection - - - -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'pug'); +app.set("views", path.join(__dirname, "views")); +app.set("view engine", "pug"); app.use(flash()); -app.use(require('connect-flash')()); -app.use(express.static(path.join(__dirname, 'public'))); -app.use(express.json()) -app.use(bodyParser.urlencoded({ - extended: true -})); -app.use(function(req, res, next) { - res.locals.messages = require('express-messages')(req, res); +app.use(require("connect-flash")()); +app.use(express.static(path.join(__dirname, "public"))); +app.use(express.json()); +app.use( + bodyParser.urlencoded({ + extended: true, + }) +); +app.use(function (req, res, next) { + res.locals.messages = require("express-messages")(req, res); next(); }); -app.set('trust proxy', 1) // trust first proxy -let secure = false -if(process.env.SECURE=='true'||process.env.SECURE=='True'||process.env.SECURE=='TRUE'){secure = true} -let setup = false -if(process.env.SETUP=='true'||process.env.SETUP=='True'||process.env.SETUP=='TRUE'){setup=true} -app.use(session({ - secret: 'fuck shit cunt', - resave: true, - store: new MemoryStore({ - checkPeriod: 86400000 // prune expired entries every 24h +app.set("trust proxy", 1); // trust first proxy +let secure = false; +if ( + process.env.SECURE == "true" || + process.env.SECURE == "True" || + process.env.SECURE == "TRUE" +) { + secure = true; +} +let setup = false; +if ( + process.env.SETUP == "true" || + process.env.SETUP == "True" || + process.env.SETUP == "TRUE" +) { + setup = true; +} +app.use( + session({ + secret: "fuck shit cunt", + resave: true, + store: new MemoryStore({ + checkPeriod: 86400000, // prune expired entries every 24h }), - saveUninitialized: true, - cookie: { secure: secure, maxAge: 86400000 }, -})) -app.use(expressValidator({ - errorFormatter: function(param, msg, value) { - var namespace = param.split('.') - , root = namespace.shift() - , formParam = root; + saveUninitialized: true, + cookie: { secure: secure, maxAge: 86400000 }, + }) +); +app.use( + expressValidator({ + errorFormatter: function (param, msg, value) { + var namespace = param.split("."), + root = namespace.shift(), + formParam = root; - while(namespace.length){ - formParam += '[' + namespace.shift() + ']'; - } - return{ - param : formParam, - msg : msg, - value : value + while (namespace.length) { + formParam += "[" + namespace.shift() + "]"; + } + return { + param: formParam, + msg: msg, + value: value, }; + }, + }) +); +app.post("/setup", async function (req, res) { + console.log(req.body); + let { mongo, url, banksecure, marketplace } = req.body; + process.env.MONGO = mongo; + process.env.MARKETPLACE = false; + if (marketplace) { + process.env.MARKETPLACE = true; } -})); -app.post('/setup', async function(req, res){ - - - console.log(req.body) - let {mongo, url, banksecure, marketplace} = req.body; - process.env.MONGO = mongo - process.env.MARKETPLACE = false - if(marketplace){ - process.env.MARKETPLACE = true + if (!url.endsWith("/")) { + url = url + "/"; } - if(!url.endsWith('/')){ - url=url+"/" + process.env.BANKAPIURL = url; + process.env.SECURE = false; + if (!banksecure) { + banksecure = false; + process.env.SECURE = false; } - process.env.BANKAPIURL =url - process.env.SECURE = false - if(!banksecure){ - banksecure = false - process.env.SECURE = false - } - process.env.SETUP = true - fs.writeFileSync('.env', "BANKAPIURL="+process.env.BANKAPIURL+'\n'+"SECURE="+process.env.SECURE+'\n'+"MARKETPLACE="+process.env.MARKETPLACE+'\n'+"MONGO="+process.env.MONGO+'\nSETUP=true') + process.env.SETUP = true; + fs.writeFileSync( + ".env", + "BANKAPIURL=" + + process.env.BANKAPIURL + + "\n" + + "SECURE=" + + process.env.SECURE + + "\n" + + "MARKETPLACE=" + + process.env.MARKETPLACE + + "\n" + + "MONGO=" + + process.env.MONGO + + "\nSETUP=true" + ); dotenv.config(); - if(process.env.MARKETPLACE){ - mongoose.connect(process.env.MONGO,{ + if (process.env.MARKETPLACE) { + mongoose.connect(process.env.MONGO, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true, }); let db = mongoose.connection; - db.once('open', function(){ - console.log('Connected to MongoDB'); - }) + db.once("open", function () { + console.log("Connected to MongoDB"); + }); //check for DB errors - db.on('error', function(err){ + db.on("error", function (err) { console.log(err); }); } - res.redirect('/') -}) -app.get('/', async function(req, res){ - if(!process.env.SETUP){ - res.render('setup') - }else{ + res.redirect("/"); +}); +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} + +app.get("/", async function (req, res) { + if (!process.env.SETUP) { + res.render("setup"); + } else { let checkalive; - try{ - checkalive = await got(process.env.BANKAPIURL+'BankF/help') - } catch(err){ - console.log(err) - + try { + checkalive = await got(process.env.BANKAPIURL + "BankF/help"); + } catch (err) { + console.log(err); } let alive = false; - try{ - if(checkalive.body){ - alive = true + try { + if (checkalive.body) { + alive = true; } - }catch(err){ - console.log(err) + } catch (err) { + console.log(err); } - res.render('index', { + res.render("index", { user: req.session.user, admin: req.session.admin, alive: alive, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } }); -app.get('/BankF', ensureAuthenticated, async function(req, res){ +app.get("/BankF", ensureAuthenticated, async function (req, res) { let successes = []; - if(req.session.sucess == true){ - successes.push({ msg: "Transfer successful"}) + if (req.session.sucess == true) { + successes.push({ msg: "Transfer successful" }); } - let admin - try{ + let admin; + try { admin = req.session.admin; - }catch(err){ - console.log(err) + } catch (err) { + console.log(err); } - let balance = 0 - try{ - balance = await got(process.env.BANKAPIURL+'BankF/'+req.session.user+'/bal') - balance = JSON.parse(balance.body) - } catch(err){ - console.log(err) + let balance = 0; + try { + balance = await got( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/bal" + ); + balance = JSON.parse(balance.body); + } catch (err) { + console.log(err); } - let logsent - let logrec - console.log('start '+Date.now()) - try{ - logsent = await got.post(process.env.BANKAPIURL+'BankF/'+req.session.user+'/log',{ - json:{ - attempt: req.session.password - }, - responseType:'json' - }) - } catch(e) { - console.log(e) + let logsent; + let logrec; + console.log("start " + Date.now()); + try { + logsent = await got.post( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", + { + json: { + attempt: req.session.password, + }, + responseType: "json", + } + ); + } catch (e) { + console.log(e); } - try{ - logrec = await got.post(process.env.BANKAPIURL+'BankF/'+req.session.user+'/log',{ - json:{ - attempt: req.session.password - }, - responseType:'json' - }) - } catch(e) { - console.log(e) + try { + logrec = await got.post( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", + { + json: { + attempt: req.session.password, + }, + responseType: "json", + } + ); + } catch (e) { + console.log(e); } - console.log(logrec.timings) - console.log("query finished "+Date.now()) - logsent = logsent.body.value + console.log(logrec.timings); + console.log("query finished " + Date.now()); + logsent = logsent.body.value; - if(logsent == 1 || logsent == -1 || logsent == null){ - logsent = undefined - }else{ - logsent = await logsent.filter(({ from }) => from === req.session.user) + if (logsent == 1 || logsent == -1 || logsent == null) { + logsent = undefined; + } else { + logsent = await logsent.filter(({ from }) => from === req.session.user); } - logrec = logrec.body.value - if(logrec === 1 || logrec === -1 || logrec === null){ - logrec = undefined - } else{ - logrec = await logrec.filter(({ to }) => to === req.session.user) + logrec = logrec.body.value; + if (logrec === 1 || logrec === -1 || logrec === null) { + logrec = undefined; + } else { + logrec = await logrec.filter(({ to }) => to === req.session.user); } - for( i in logrec){ - logrec[i].time = Date(logrec[i].time) + for (i in logrec) { + logrec[i].time = Date(logrec[i].time); } - for( i in logsent){ - logsent[i].time = Date(logsent[i].time) + for (i in logsent) { + logsent[i].time = Date(logsent[i].time); } - console.log("begin render " + Date.now()) - res.render('bankf',{ - logrec:logrec, - logsent:logsent, + console.log("begin render " + Date.now()); + res.render("bankf", { + logrec: logrec, + logsent: logsent, user: req.session.user, balance: balance.value, user: req.session.user, admin: req.session.admin, sucesses: successes, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); }); - -app.post('/sendfunds', async function(req, res){ +app.post("/sendfunds", async function (req, res) { let balance = 0; - try{ - balance = await got(process.env.BANKAPIURL+'BankF/'+req.session.user+'/bal') - balance = JSON.parse(balance.body) - } catch(err){ - console.log(err) + try { + balance = await got( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/bal" + ); + balance = JSON.parse(balance.body); + } catch (err) { + console.log(err); } - let {amount, name, senderpass} = req.body - let a_name = req.session.user + let { amount, name, senderpass } = req.body; + let a_name = req.session.user; let successes = []; let errors = []; - let result = {} - result = await got.post(process.env.BANKAPIURL+'BankF/sendfunds',{ - json:{ + let result = {}; + result = await got.post(process.env.BANKAPIURL + "BankF/sendfunds", { + json: { a_name: a_name, b_name: name, amount: parseInt(amount), - attempt: senderpass + attempt: senderpass, }, - responseType:'json' - }) - if(result.body.value == true || result.body.value){ + responseType: "json", + }); + if (result.body.value == true || result.body.value) { req.session.success = true; //post details - res.redirect('/BankF') + res.redirect("/BankF"); } else { - errors.push({msg: "Transfer Unsuccessful"}) + errors.push({ msg: "Transfer Unsuccessful" }); - let logsent - let logrec + let logsent; + let logrec; - try{ - logsent = await got.post(process.env.BANKAPIURL+'BankF/'+req.session.user+'/log',{ - json:{ - attempt: req.session.password - }, - responseType:'json' - }) - } catch(e) { - console.log(e) + try { + logsent = await got.post( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", + { + json: { + attempt: req.session.password, + }, + responseType: "json", + } + ); + } catch (e) { + console.log(e); } - try{ - logrec = await got.post(process.env.BANKAPIURL+'BankF/'+req.session.user+'/log',{ - json:{ - attempt: req.session.password - }, - responseType:'json' - }) - } catch(e) { - console.log(e) + try { + logrec = await got.post( + process.env.BANKAPIURL + "BankF/" + req.session.user + "/log", + { + json: { + attempt: req.session.password, + }, + responseType: "json", + } + ); + } catch (e) { + console.log(e); } - logsent = logsent.body.value - console.log(logsent) - if(logsent == 1|| logsent == -1 || logsent == null){ - logsent = undefined - }else{ - logsent = await logsent.filter(({ from }) => from === req.session.user) + logsent = logsent.body.value; + console.log(logsent); + if (logsent == 1 || logsent == -1 || logsent == null) { + logsent = undefined; + } else { + logsent = await logsent.filter(({ from }) => from === req.session.user); } - logrec = logrec.body.value - if(logrec == 1 || logrec == -1 || logrec == null){ - logrec = undefined - } else{ - logrec = await logrec.filter(({ to }) => to === req.session.user) + logrec = logrec.body.value; + if (logrec == 1 || logrec == -1 || logrec == null) { + logrec = undefined; + } else { + logrec = await logrec.filter(({ to }) => to === req.session.user); } - for( i in logrec){ - let d = new Date(logrec[i].time) - logrec[i].time = d + for (i in logrec) { + let d = new Date(logrec[i].time); + logrec[i].time = d; } - for( i in logsent){ - let d = new Date(logsent[i].time) - logsent[i].time = d + for (i in logsent) { + let d = new Date(logsent[i].time); + logsent[i].time = d; } - res.render("bankf",{ - - logsent:logsent, - logrec:logrec, - errors:errors, + res.render("bankf", { + logsent: logsent, + logrec: logrec, + errors: errors, successes: successes, - balance:balance.value, + balance: balance.value, user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } -}) +}); -app.post('/register', async function(req, res){ - var {name, password, password2} = req.body; +app.post("/register", async function (req, res) { + var { name, password, password2 } = req.body; - let checkuser = await got(process.env.BANKAPIURL+'BankF/contains/'+name) - checkuser = JSON.parse(checkuser.body).value + let checkuser = await got(process.env.BANKAPIURL + "BankF/contains/" + name); + checkuser = JSON.parse(checkuser.body).value; let errors = []; let successes = []; - if(checkuser == false){ - if(!name || !password || !password2) { - errors.push({msg : "please fill in all fields"}); + if (checkuser == false) { + if (!name || !password || !password2) { + errors.push({ msg: "please fill in all fields" }); } - if(password !== password2) { - errors.push({msg : "Passwords don't match"}); + if (password !== password2) { + errors.push({ msg: "Passwords don't match" }); } - if(password.length < 6 ) { - errors.push({msg : 'Password must be at least 6 characters'}) + if (password.length < 6) { + errors.push({ msg: "Password must be at least 6 characters" }); } - if(errors[0]){ - res.render('register', { - errors:errors, - marketplace: process.env.MARKETPLACE - }) + if (errors[0]) { + res.render("register", { + errors: errors, + marketplace: process.env.MARKETPLACE, + }); } else { - if(postUser(name, password)){ - successes.push({msg:"User Registered Please Log In"}) - res.render('login',{ - errors:errors, + if (postUser(name, password)) { + successes.push({ msg: "User Registered Please Log In" }); + res.render("login", { + errors: errors, successes: successes, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } } } else { - errors.push({msg: "User already exists"}) - res.render('register',{ - errors:errors, - marketplace: process.env.MARKETPLACE - }) + errors.push({ msg: "User already exists" }); + res.render("register", { + errors: errors, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } -}) +}); -app.post('/login', async function(req, res){ - if(req.session.user){ - res.redirect("/") +app.post("/login", async function (req, res) { + if (req.session.user) { + res.redirect("/"); } - let {name,password} = req.body + let { name, password } = req.body; let adminTest; let errors = []; - try{ - adminTest = await got.post(process.env.BANKAPIURL+'BankF/admin/vpass',{ - json:{ + try { + adminTest = await got.post(process.env.BANKAPIURL + "BankF/admin/vpass", { + json: { attempt: password, }, - responseType:'json' - }) - } catch(err){ - console.log(err) + responseType: "json", + }); + } catch (err) { + console.log(err); } - req.session.password = password - if(adminTest.body.value == undefined){ - res.redirect('/') - }else{ - req.session.admin = adminTest.body.value - req.session.adminp = password - let verified - try{ - verified = await got.post(process.env.BANKAPIURL+'BankF/vpass', { - json:{ + req.session.password = password; + if (adminTest.body.value == undefined) { + res.redirect("/"); + } else { + req.session.admin = adminTest.body.value; + req.session.adminp = password; + let verified; + try { + verified = await got.post(process.env.BANKAPIURL + "BankF/vpass", { + json: { name: name, - attempt: password + attempt: password, }, - responseType:'json' - - }) - - - } catch(err){ - console.log(err) + responseType: "json", + }); + } catch (err) { + console.log(err); } finally { - console.log(verified.body.value) - if(verified.body.value == 0){ - errors.push({msg: 'Password wrong'}) - res.render('login',{ - errors:errors, - marketplace: process.env.MARKETPLACE - }) - }else if(verified.body.value == 1){ + console.log(verified.body.value); + if (verified.body.value == 0) { + errors.push({ msg: "Password wrong" }); + res.render("login", { + errors: errors, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + } else if (verified.body.value == 1) { req.session.user = name; - req.session.password = password - res.redirect('/BankF') + req.session.password = password; + res.redirect("/BankF"); } else { - errors.push({msg: 'User not found'}) - res.render('login',{ - errors:errors, - marketplace: process.env.MARKETPLACE - }) + errors.push({ msg: "User not found" }); + res.render("login", { + errors: errors, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } } - } - //res.redirect('/login') -}) - - -let admin = require('./routes/admin'); -app.use('/admin', admin); - -let settings = require('./routes/settings'); -app.use('/settings', settings) - -let marketplace = require('./routes/marketplace') -app.use('/marketplace', marketplace) - - -app.get('/logout', function(req, res){ - req.session.regenerate(function(err) { - res.render('login', { - marketplace: process.env.MARKETPLACE - }) - }) }); +let admin = require("./routes/admin"); +app.use("/admin", admin); -app.get('/login', function(req, res){ - req.session.regenerate(function(err) { - res.render('login', { +let settings = require("./routes/settings"); +app.use("/settings", settings); + +let marketplace = require("./routes/marketplace"); +app.use("/marketplace", marketplace); + +app.get("/logout", function (req, res) { + req.session.regenerate(function (err) { + res.render("login", { + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + }); +}); + +app.get("/login", function (req, res) { + req.session.regenerate(function (err) { + res.render("login", { user: req.session.user, - marketplace: process.env.MARKETPLACE - }) - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + }); }); -app.get('/register', function(req, res){ - res.render('register', { +app.get("/register", function (req, res) { + res.render("register", { user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE - }) - + marketplace: process.env.MARKETPLACE, + random: papy(), + }); }); - - -app.listen(process.env.PORT || 3000, function(){ - console.log('Server started on port 3000...'); +app.listen(process.env.PORT || 3000, function () { + console.log("Server started on port 3000..."); }); diff --git a/package-lock.json b/package-lock.json index 6ba8419..11caf55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "license": "ISC", "dependencies": { "connect-flash": "^0.1.1", - "cote": "^1.0.2", "dotenv": "^8.2.0", "express": "^4.17.1", "express-messages": "^1.0.1", @@ -26,7 +25,7 @@ "validator": "^13.5.2" }, "engines": { - "node": "15.x" + "node": "16.x" } }, "node_modules/@babel/helper-validator-identifier": { @@ -55,33 +54,6 @@ "to-fast-properties": "^2.0.0" } }, - "node_modules/@dashersw/axon": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@dashersw/axon/-/axon-2.0.5.tgz", - "integrity": "sha512-e7az6UOh/1JqLvzg2GPhP3n47QMQal3Qg2a2497JwY7dlbSKUg4dQmnRyKWNjFz0FHjranUjKvX6J6NAV3Sm/Q==", - "dependencies": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "configurable": "0.0.1", - "debug": "*", - "escape-regexp": "0.0.1" - }, - "engines": { - "node": ">= 0.11.8" - } - }, - "node_modules/@dashersw/node-discover": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@dashersw/node-discover/-/node-discover-1.0.4.tgz", - "integrity": "sha512-OblARM345ECaTSSFQcuWUl+7/uhOjhKBIA0G0CbOPbUzwF3cqBbl2R0E9tulnsLk3XB6Zpmja0TZIU5ClKF6LA==", - "dependencies": { - "redis": "^2.7.1", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">=0.4.1 <0.5.0 || >=0.6.9" - } - }, "node_modules/@sindresorhus/is": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", @@ -186,19 +158,6 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, - "node_modules/amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" - }, - "node_modules/amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", - "dependencies": { - "amp": "0.3.1" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -219,14 +178,6 @@ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dependencies": { - "lodash": "^4.17.14" - } - }, "node_modules/babel-walk": { "version": "3.0.0-canary-5", "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", @@ -359,14 +310,6 @@ "is-regex": "^1.0.3" } }, - "node_modules/charm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", - "integrity": "sha1-it02cVOm2aWBMxBSxAkJkdqZXjU=", - "dependencies": { - "inherits": "^2.0.1" - } - }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -375,14 +318,6 @@ "mimic-response": "^1.0.0" } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -398,11 +333,6 @@ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, - "node_modules/configurable": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/configurable/-/configurable-0.0.1.tgz", - "integrity": "sha1-R9dbcntRtOuEwdra/j+CQDE4M7E=" - }, "node_modules/connect-flash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", @@ -457,25 +387,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "node_modules/cote": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cote/-/cote-1.0.2.tgz", - "integrity": "sha512-2wj+dKvJcmLQqONRx47SyBBanIxwtbF/YlMhR4Iu+Zegjgmqpt4sen1X+f5zsqHFvj7PQAaH3sGNqg1OjpHoIg==", - "dependencies": { - "@dashersw/axon": "2.0.5", - "@dashersw/node-discover": "^1.0.4", - "charm": "1.0.2", - "colors": "1.4.0", - "eventemitter2": "6.0.0", - "lodash": "^4.17.20", - "portfinder": "1.0.25", - "socket.io": "^2.3.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=v10.0.0" - } - }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -551,11 +462,6 @@ "node": ">=8" } }, - "node_modules/double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -594,9 +500,9 @@ } }, "node_modules/engine.io-client": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.1.tgz", - "integrity": "sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "dependencies": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", @@ -607,7 +513,7 @@ "parseqs": "0.0.6", "parseuri": "0.0.6", "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.5.4", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" } }, @@ -658,11 +564,6 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "node_modules/escape-regexp": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz", - "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ=" - }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -671,11 +572,6 @@ "node": ">= 0.6" } }, - "node_modules/eventemitter2": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.0.0.tgz", - "integrity": "sha512-ZuNWHD7S7IoikyEmx35vPU8H1W0L+oi644+4mSTg7nwXvBQpIwQL7DPjYUF0VMB0jPkNMo3MqD07E7MYrkFmjQ==" - }, "node_modules/express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -1167,22 +1063,6 @@ "node": ">=4" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mongodb": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.6.tgz", @@ -1419,32 +1299,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "node_modules/portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -1680,32 +1534,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/redis": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", - "dependencies": { - "double-ended-queue": "^2.1.0-0", - "redis-commands": "^1.2.0", - "redis-parser": "^2.6.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", @@ -2034,14 +1862,6 @@ "node": ">= 0.4.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validator": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", @@ -2106,9 +1926,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", "engines": { "node": ">=0.4.0" } @@ -2145,27 +1965,6 @@ "to-fast-properties": "^2.0.0" } }, - "@dashersw/axon": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@dashersw/axon/-/axon-2.0.5.tgz", - "integrity": "sha512-e7az6UOh/1JqLvzg2GPhP3n47QMQal3Qg2a2497JwY7dlbSKUg4dQmnRyKWNjFz0FHjranUjKvX6J6NAV3Sm/Q==", - "requires": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "configurable": "0.0.1", - "debug": "*", - "escape-regexp": "0.0.1" - } - }, - "@dashersw/node-discover": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@dashersw/node-discover/-/node-discover-1.0.4.tgz", - "integrity": "sha512-OblARM345ECaTSSFQcuWUl+7/uhOjhKBIA0G0CbOPbUzwF3cqBbl2R0E9tulnsLk3XB6Zpmja0TZIU5ClKF6LA==", - "requires": { - "redis": "^2.7.1", - "uuid": "^3.3.2" - } - }, "@sindresorhus/is": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", @@ -2252,19 +2051,6 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, - "amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" - }, - "amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", - "requires": { - "amp": "0.3.1" - } - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2285,14 +2071,6 @@ "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, "babel-walk": { "version": "3.0.0-canary-5", "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", @@ -2398,14 +2176,6 @@ "is-regex": "^1.0.3" } }, - "charm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", - "integrity": "sha1-it02cVOm2aWBMxBSxAkJkdqZXjU=", - "requires": { - "inherits": "^2.0.1" - } - }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -2414,11 +2184,6 @@ "mimic-response": "^1.0.0" } }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -2434,11 +2199,6 @@ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, - "configurable": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/configurable/-/configurable-0.0.1.tgz", - "integrity": "sha1-R9dbcntRtOuEwdra/j+CQDE4M7E=" - }, "connect-flash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", @@ -2481,22 +2241,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cote": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cote/-/cote-1.0.2.tgz", - "integrity": "sha512-2wj+dKvJcmLQqONRx47SyBBanIxwtbF/YlMhR4Iu+Zegjgmqpt4sen1X+f5zsqHFvj7PQAaH3sGNqg1OjpHoIg==", - "requires": { - "@dashersw/axon": "2.0.5", - "@dashersw/node-discover": "^1.0.4", - "charm": "1.0.2", - "colors": "1.4.0", - "eventemitter2": "6.0.0", - "lodash": "^4.17.20", - "portfinder": "1.0.25", - "socket.io": "^2.3.0", - "uuid": "^3.3.3" - } - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2550,11 +2294,6 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" }, - "double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=" - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2607,9 +2346,9 @@ } }, "engine.io-client": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.1.tgz", - "integrity": "sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "requires": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", @@ -2620,7 +2359,7 @@ "parseqs": "0.0.6", "parseuri": "0.0.6", "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.5.4", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" }, "dependencies": { @@ -2651,21 +2390,11 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "escape-regexp": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz", - "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ=" - }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "eventemitter2": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.0.0.tgz", - "integrity": "sha512-ZuNWHD7S7IoikyEmx35vPU8H1W0L+oi644+4mSTg7nwXvBQpIwQL7DPjYUF0VMB0jPkNMo3MqD07E7MYrkFmjQ==" - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -3058,19 +2787,6 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, "mongodb": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.6.tgz", @@ -3233,31 +2949,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -3466,26 +3157,6 @@ "util-deprecate": "~1.0.1" } }, - "redis": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", - "requires": { - "double-ended-queue": "^2.1.0-0", - "redis-commands": "^1.2.0", - "redis-parser": "^2.6.0" - } - }, - "redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" - }, "regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", @@ -3787,11 +3458,6 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, "validator": { "version": "13.5.2", "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", @@ -3830,9 +3496,9 @@ "requires": {} }, "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" }, "yallist": { "version": "2.1.2", diff --git a/package.json b/package.json index 0cdb9ee..506f8e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "dependencies": { "connect-flash": "^0.1.1", - "cote": "^1.0.2", "dotenv": "^8.2.0", "express": "^4.17.1", "express-messages": "^1.0.1", @@ -35,6 +34,6 @@ }, "homepage": "https://github.com/Expand-sys/ccashfrontend#readme", "engines": { - "node": "15.x" + "node": "16.x" } } diff --git a/public/css/papy.css b/public/css/papy.css new file mode 100644 index 0000000..076e987 --- /dev/null +++ b/public/css/papy.css @@ -0,0 +1,129 @@ +@font-face { + font-family: "PapyrusW01"; + src: url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.eot"); + src: url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.eot?#iefix") + format("embedded-opentype"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.woff2") + format("woff2"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.woff") + format("woff"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.ttf") + format("truetype"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.svg#PapyrusW01") + format("svg"); +} + +.main { + display: flex; + flex-direction: column; + justify-content: space-around; + height: 100vh; +} +body { + background: #f4da46; + height: 100vh; + background-attachment: fixed; +} +.navbarrr { + background: #bc5b0b; +} +.blue { + background: #46cff2; +} +.container-large { + padding-left: 10%; + padding-right: 10%; +} +.col { + padding: 0px; + padding-left: 0px; + padding-right: 0px; +} +.card { + padding: 10px; +} +.row { + margin-left: 0px; + margin-right: 0px; +} +.logo { + width: 250px; + background-color: white; +} +.logs { + height: 350px; + overflow: auto; +} + +.content { + flex-grow: 1; +} + +.gallery { + background-color: white; + margin-bottom: 50px; + box-shadow: 10px 10px 5px black; +} + +.bg-custom { + background-color: #130f40; +} +.button-fixed { + bottom: 0; + position: fixed; + right: 0; + border-radius: 4px; +} +.fas { + cursor: pointer; + font-size: 24px; +} +p { + font-size: 14px; +} + +.text-black { + color: black; +} +.text-white { + color: white; +} +.form-check-input { + margin-left: 0; + padding: inherit; +} + +input[type="radio"]:checked ~ .reveal-if-active, +input[type="checkbox"]:checked ~ .reveal-if-active { + opacity: 1; + max-height: 100px; /* little bit of a magic number :( */ + overflow: visible; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +label { + font-family: "PapyrusW01"; +} + +h1 { + color: white; +} +.shadow { + box-shadow: 5px 10px #888888; +} +$w: Min(10em, 100%); + +.grid--masonry { + display: grid; + grid-template-columns: repeat(auto-fit, $w); + + > * { + width: $w; + } +} diff --git a/public/css/style.css b/public/css/style.css index aff02d9..5cecb32 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,3 +1,4 @@ + .main { display: flex; flex-direction: column; diff --git a/routes/admin.js b/routes/admin.js index c5672f2..e631a53 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -1,268 +1,298 @@ -const express = require('express'); +const express = require("express"); const router = express.Router(); -const path = require('path'); -const {ensureAuthenticated} = require("../config/auth.js") -const {checkAdmin} = require ("../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('../helpers/functions.js') -const got = require('got') -const MemoryStore = require('memorystore')(session) -const fs = require('fs'); -const mongoose = require('mongoose') -console.log('Sen was here') +const path = require("path"); +const { ensureAuthenticated } = require("../config/auth.js"); +const { checkAdmin } = require("../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("../helpers/functions.js"); +const got = require("got"); +const MemoryStore = require("memorystore")(session); +const fs = require("fs"); +const mongoose = require("mongoose"); +console.log("Sen was here"); - - - - -function mongo(){ - if(process.env.MONGO){ - console.log(process.env.MONGO) - mongoose.connect(process.env.MONGO,{ +function mongo() { + if (process.env.MONGO) { + console.log(process.env.MONGO); + mongoose.connect(process.env.MONGO, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true, }); let db = mongoose.connection; - db.once('open', function(){ - console.log('Connected to MongoDB'); - }) + db.once("open", function () { + console.log("Connected to MongoDB"); + }); //check for DB errors - db.on('error', function(err){ + db.on("error", function (err) { console.log(err); }); } } - - - - - -router.get('/', checkAdmin, function(req, res){ - res.render('adminsettings', { +router.get("/", checkAdmin, function (req, res) { + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE - }) - + marketplace: process.env.MARKETPLACE, + random: papy(), + }); }); - -router.post('/user',checkAdmin , async function(req,res){ - let {name, init_pass, init_bal, password2} = req.body - let contains = await got(process.env.BANKAPIURL+'BankF/contains/'+name) - contains = JSON.parse(contains.body).value +router.post("/user", checkAdmin, async function (req, res) { + let { name, init_pass, init_bal, password2 } = req.body; + let contains = await got(process.env.BANKAPIURL + "BankF/contains/" + name); + contains = JSON.parse(contains.body).value; let errors = []; let successes = []; - if(contains == true){ - errors.push({msg: 'User already exists'}) - res.render('adminsettings',{ - errors:errors - }) - }else { - if(!name || !init_pass || !init_bal || !password2) { - errors.push({msg : "please fill in all fields"}); + if (contains == true) { + errors.push({ msg: "User already exists" }); + res.render("adminsettings", { + errors: errors, + }); + } else { + if (!name || !init_pass || !init_bal || !password2) { + errors.push({ msg: "please fill in all fields" }); } //check if match - if(init_pass !== password2) { - errors.push({msg : "Passwords don't match"}); + if (init_pass !== password2) { + errors.push({ msg: "Passwords don't match" }); } //check if password is more than 6 characters - if(init_pass.length < 6 ) { - errors.push({msg : 'Password must be at least 6 characters'}) + if (init_pass.length < 6) { + errors.push({ msg: "Password must be at least 6 characters" }); } let post; let successes = []; - try{ - post = await got.post(process.env.BANKAPIURL+'BankF/admin/user',{ - json:{ + try { + post = await got.post(process.env.BANKAPIURL + "BankF/admin/user", { + json: { name: name, attempt: req.session.adminp, init_bal: parseInt(init_bal), init_pass: init_pass, }, - responseType:'json' - }) - } catch(err){ - console.log(err) + responseType: "json", + }); + } catch (err) { + console.log(err); } - if(post.body.value == true){ - successes.push({msg: "Account Creation Successful"}) + if (post.body.value == true) { + successes.push({ msg: "Account Creation Successful" }); } } - res.render('adminsettings',{ + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, successes: successes, - marketplace: process.env.MARKETPLACE - }) -}) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); +}); - -router.post('/baluser',checkAdmin , async function(req,res){ - let {name} = req.body +router.post("/baluser", checkAdmin, async function (req, res) { + let { name } = req.body; let balance; let successes = []; let errors = []; - try{ - balance = await got(process.env.BANKAPIURL+'BankF/'+name+'/bal') - balance = JSON.parse(balance.body) - } catch(err){ - console.log(err) + try { + balance = await got(process.env.BANKAPIURL + "BankF/" + name + "/bal"); + balance = JSON.parse(balance.body); + } catch (err) { + console.log(err); } - if(balance.value == -1 || balance.value == undefined){ - errors.push({msg: "User not found"}) - }else{ - successes.push({msg: "User: "+name+" has "+balance.value+" monies"}) + if (balance.value == -1 || balance.value == undefined) { + errors.push({ msg: "User not found" }); + } else { + successes.push({ + msg: "User: " + name + " has " + balance.value + " monies", + }); } - res.render('adminsettings',{ + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, successes: successes, errors: errors, - marketplace: process.env.MARKETPLACE - }) -}) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); +}); - -router.post('/bal',checkAdmin , async function(req,res){ - let {name, amount} = req.body +router.post("/bal", checkAdmin, async function (req, res) { + let { name, amount } = req.body; let patch; let successes = []; - try{ - patch = await got.patch(process.env.BANKAPIURL+'BankF/admin/'+name+'/bal',{ - json:{ - name: name, - attempt: req.session.adminp, - amount: parseInt(amount), - }, - responseType:'json' - }) - } catch(err){ - console.log(err) + try { + patch = await got.patch( + process.env.BANKAPIURL + "BankF/admin/" + name + "/bal", + { + json: { + name: name, + attempt: req.session.adminp, + amount: parseInt(amount), + }, + responseType: "json", + } + ); + } catch (err) { + console.log(err); } - if(patch.body.value == true){ - successes.push({msg: "Change Funds Successful"}) + if (patch.body.value == true) { + successes.push({ msg: "Change Funds Successful" }); } - res.render('adminsettings',{ + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, successes: successes, - marketplace: process.env.MARKETPLACE - }) -}) -router.post('/userdelete', checkAdmin, async function(req,res){ - let {name, attempt} = req.body - console.log(name) - let contains = await got(process.env.BANKAPIURL+'BankF/contains/'+name) - contains = JSON.parse(contains.body).value + marketplace: process.env.MARKETPLACE, + random: papy(), + }); +}); +router.post("/userdelete", checkAdmin, async function (req, res) { + let { name, attempt } = req.body; + console.log(name); + let contains = await got(process.env.BANKAPIURL + "BankF/contains/" + name); + contains = JSON.parse(contains.body).value; let deleteUser; let successes = []; let errors = []; - if(attempt != req.session.adminp){ - errors.push({msg:"Wrong Admin Password"}) + if (attempt != req.session.adminp) { + errors.push({ msg: "Wrong Admin Password" }); } - console.log(contains) - if(contains == true){ - deleteUser = got.delete(process.env.BANKAPIURL+'BankF/admin/user',{ - json:{ + console.log(contains); + if (contains == true) { + deleteUser = got.delete(process.env.BANKAPIURL + "BankF/admin/user", { + json: { name: name, attempt: attempt, }, - responseType:'json' - }) - successes.push({msg: "User Deletion Successful"}) - } else{ - errors.push({msg: "User Deletion Failed, User Not Found"}) + responseType: "json", + }); + successes.push({ msg: "User Deletion Successful" }); + } else { + errors.push({ msg: "User Deletion Failed, User Not Found" }); } - res.render('adminsettings',{ + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, successes: successes, errors: errors, - marketplace: process.env.MARKETPLACE - }) -}) -router.post('/destroyallsessions', checkAdmin, async function(req,res) { - let {attempt} = req.body; - let adminTest - let errors = [] - try{ - adminTest = await got.post(process.env.BANKAPIURL+'BankF/admin/vpass',{ - json:{ + marketplace: process.env.MARKETPLACE, + random: papy(), + }); +}); +router.post("/destroyallsessions", checkAdmin, async function (req, res) { + let { attempt } = req.body; + let adminTest; + let errors = []; + try { + adminTest = await got.post(process.env.BANKAPIURL + "BankF/admin/vpass", { + json: { attempt: attempt, }, - responseType:'json' - }) - } catch(err){ - console.log(err) + responseType: "json", + }); + } catch (err) { + console.log(err); } - console.log(adminTest.body.value) - if(adminTest){ - req.sessionStore.clear(function(err){ - console.log(err) - }) - res.redirect('/') - }else{ - errors.push({msg: "failed admin password check"}) - res.render("adminsettings",{ + console.log(adminTest.body.value); + if (adminTest) { + req.sessionStore.clear(function (err) { + console.log(err); + }); + res.redirect("/"); + } else { + errors.push({ msg: "failed admin password check" }); + res.render("adminsettings", { user: req.session.user, admin: req.session.admin, errors: errors, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + } +}); + +router.post("/changebackend", checkAdmin, async function (req, res) { + let { url } = req.body; + if (!url.endsWith("/")) { + url = url + "/"; + } + process.env.BANKAPIURL = url; + fs.writeFileSync( + ".env", + "BANKAPIURL=" + + process.env.BANKAPIURL + + "\n" + + "SECURE=" + + process.env.SECURE + + "\n" + + "MARKETPLACE=" + + process.env.MARKETPLACE + + "\n" + + "MONGO=" + + process.env.MONGO + + "\nSETUP=true" + ); + res.redirect("../"); +}); +router.post("/mongodb", checkAdmin, async function (req, res) { + let { url } = req.body; + process.env.MONGO = url; + + if (process.env.MONGO.length < 3) { + process.env.MARKETPLACE = false; + console.log("false"); + } else { + process.env.MARKETPLACE = true; + console.log("true"); + } + fs.writeFileSync( + ".env", + "BANKAPIURL=" + + process.env.BANKAPIURL + + "\n" + + "SECURE=" + + process.env.SECURE + + "\n" + + "MARKETPLACE=" + + process.env.MARKETPLACE + + "\n" + + "MONGO=" + + process.env.MONGO + + "\nSETUP=true" + ); + try { + mongo(); + } catch (e) { + console.log(e); } -}) - - - - -router.post('/changebackend', checkAdmin, async function(req,res){ - let {url} = req.body; - if(!url.endsWith('/')){ - url = url+'/' - } - process.env.BANKAPIURL = url - fs.writeFileSync('.env', "BANKAPIURL="+process.env.BANKAPIURL+'\n'+"SECURE="+process.env.SECURE+'\n'+"MARKETPLACE="+process.env.MARKETPLACE+'\n'+"MONGO="+process.env.MONGO+'\nSETUP=true') - res.redirect('../') -}) -router.post('/mongodb', checkAdmin, async function(req,res){ - let {url} = req.body; - process.env.MONGO = url - - if(process.env.MONGO.length < 3){ - process.env.MARKETPLACE = false - console.log("false") - }else { process.env.MARKETPLACE = true;console.log("true")} - fs.writeFileSync('.env', "BANKAPIURL="+process.env.BANKAPIURL+'\n'+"SECURE="+process.env.SECURE+'\n'+"MARKETPLACE="+process.env.MARKETPLACE+'\n'+"MONGO="+process.env.MONGO+'\nSETUP=true') - try{ - mongo() - }catch(e){ - console.log(e) - } - - res.redirect('../') -}) -router.post('/close', checkAdmin, async function(req,res){ - let {attempt} = req.body; + res.redirect("../"); +}); +router.post("/close", checkAdmin, async function (req, res) { + let { attempt } = req.body; let close; - close = got.post(process.env.BANKAPIURL+'BankF/admin/close', { - json:{ + close = got.post(process.env.BANKAPIURL + "BankF/admin/close", { + json: { attempt: attempt, }, - responseType:'json' - }) - res.redirect('../') -}) - - - + responseType: "json", + }); + res.redirect("../"); +}); +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} module.exports = router; diff --git a/routes/marketplace.js b/routes/marketplace.js index 3f8666c..6f64a04 100644 --- a/routes/marketplace.js +++ b/routes/marketplace.js @@ -1,224 +1,218 @@ -const express = require('express') -const router = express.Router() -const bodyParser = require('body-parser') -const session = require('express-session'); -const mongoose = require('mongoose') -const dotenv = require('dotenv'); -const got = require('got'); -const {ensureAuthenticated} = require("../config/auth.js") -let db +const express = require("express"); +const router = express.Router(); +const bodyParser = require("body-parser"); +const session = require("express-session"); +const mongoose = require("mongoose"); +const dotenv = require("dotenv"); +const got = require("got"); +const { ensureAuthenticated } = require("../config/auth.js"); +let db; - - -function mongo(){ - if(process.env.MONGO){ - console.log(process.env.MONGO) - mongoose.connect(process.env.MONGO,{ +function mongo() { + if (process.env.MONGO) { + console.log(process.env.MONGO); + mongoose.connect(process.env.MONGO, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true, }); let db = mongoose.connection; - db.once('open', function(){ - console.log('Connected to MongoDB'); - }) + db.once("open", function () { + console.log("Connected to MongoDB"); + }); //check for DB errors - db.on('error', function(err){ + db.on("error", function (err) { console.log(err); }); } } -mongo() +mongo(); +let Item = require("../schemas/item"); +let Listing = require("../schemas/listing"); +let Inventory = require("../schemas/inventory"); -let Item = require('../schemas/item') -let Listing = require('../schemas/listing') -let Inventory = require('../schemas/inventory') - -router.all('*', function(req, res, next) { - console.log(req.method, req.url); - next(); +router.all("*", function (req, res, next) { + console.log(req.method, req.url); + next(); }); -router.get('/', function(req, res) { - let columns = [0,1,2,3] - Item.find({}, function(err, items){ - if(err){ +router.get("/", function (req, res) { + let columns = [0, 1, 2, 3]; + Item.find({}, function (err, items) { + if (err) { console.log(err); } else { - res.render('marketplace', { - columns:columns, + res.render("marketplace", { + columns: columns, items: items, user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE + marketplace: process.env.MARKETPLACE, + random: papy(), }); } - }) + }); }); - -router.get('/marketdash', ensureAuthenticated, function(req,res){ - Inventory.findOne({user:req.session.user}, async function(err, inventory){ - if(!inventory){ - let newinv = new Inventory; - newinv.user = req.session.user - newinv.save(function(err){ - if(err){ +router.get("/marketdash", ensureAuthenticated, function (req, res) { + Inventory.findOne({ user: req.session.user }, async function ( + err, + inventory + ) { + if (!inventory) { + let newinv = new Inventory(); + newinv.user = req.session.user; + newinv.save(function (err) { + if (err) { console.log(err); return; - } else{ - console.log("created new inventory for "+req.session.user) + } else { + console.log("created new inventory for " + req.session.user); } - }) + }); } - res.render('marketdash',{ - user:req.session.user, - admin:req.session.admin, - inventory:inventory, - marketplace: process.env.MARKETPLACE - }) - }) + res.render("marketdash", { + user: req.session.user, + admin: req.session.admin, + inventory: inventory, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + }); +}); +router.get("/:id", function (req, res) { + Item.findById(req.params.id, function (err, item) { + Listing.find({ foreignid: req.params.id }, function (err, listings) { + console.log(listings); -}) - -router.get('/:id',function(req, res){ - Item.findById(req.params.id, function(err, item){ - Listing.find({foreignid: req.params.id}, function(err, listings){ - console.log(listings) - - - res.render('item', { + res.render("item", { listings: listings, - user:req.session.user, - admin:req.session.admin, - item:item, - marketplace: process.env.MARKETPLACE + user: req.session.user, + admin: req.session.admin, + item: item, + marketplace: process.env.MARKETPLACE, + random: papy(), }); - }) - }); -}) - -router.get('/:id/list',ensureAuthenticated, function(req,res){ - Item.findById(req.params.id, function(err, item){ - res.render('itemlist', { - user:req.session.user, - admin:req.session.admin, - item:item, - marketplace: process.env.MARKETPLACE }); }); -}) -router.get('/:id/buy',ensureAuthenticated, function(req,res){ - Listing.find({foreignid: req.params.id}, function(err, listings){ - console.log(listings) +}); - - res.render('itembuy', { - listings:listings, - user:req.session.user, - admin:req.session.admin, - marketplace: process.env.MARKETPLACE +router.get("/:id/list", ensureAuthenticated, function (req, res) { + Item.findById(req.params.id, function (err, item) { + res.render("itemlist", { + user: req.session.user, + admin: req.session.admin, + item: item, + marketplace: process.env.MARKETPLACE, + random: papy(), }); }); -}) +}); +router.get("/:id/buy", ensureAuthenticated, function (req, res) { + Listing.find({ foreignid: req.params.id }, function (err, listings) { + console.log(listings); + res.render("itembuy", { + listings: listings, + user: req.session.user, + admin: req.session.admin, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + }); +}); - - - - -router.post('/:id/list',ensureAuthenticated, async function(req,res){ - let body = req.body - let item = JSON.parse(req.body.item) - console.log(item) +router.post("/:id/list", ensureAuthenticated, async function (req, res) { + let body = req.body; + let item = JSON.parse(req.body.item); + console.log(item); let listing = new Listing(); - listing.itemId = item.itemId - listing.meta = item.meta - listing.name = item.name - listing.foreignid = item._id - listing.price = body.price - listing.amount = body.amount - listing.seller = req.session.user - listing.save(function(err){ - if(err){ + listing.itemId = item.itemId; + listing.meta = item.meta; + listing.name = item.name; + listing.foreignid = item._id; + listing.price = body.price; + listing.amount = body.amount; + listing.seller = req.session.user; + listing.save(function (err) { + if (err) { console.log(err); return; - } else{ - console.log("added "+ listing.name+" from "+listing.seller) - } - }) - let inventory = await Inventory.findOne({user:req.session.user}).exec() - if( inventory == null){ - let newinv = new Inventory; - newinv.user = req.session.user - newinv.listings = listing; - newinv.save(function(err){ - if(err){ - console.log(err); - return; - } else{ - console.log("created new inventory for "+req.session.user) - } - }) - } else { - inventory.listings.push(listing) - inventory.save(function(err){ - if(err){ - console.log(err); - return; - } else{ - console.log("pushed new listing") - } - }) - } - res.redirect('/marketplace/marketdash') -}) -router.post('/:id/buy',async function(req, res){ - Listing.findOne({_id: req.params.id}, async function(err, listing){ - - let inventory = await Inventory.findOne({user:req.session.user}).exec() - if(inventory == null){ - let newinv = new Inventory; - newinv.user = req.session.user - newinv.purchases = listing; - newinv.save(function(err){ - if(err){ - console.log(err); - return; - } else{ - console.log("created new inventory for "+req.session.user) - } - }) } else { - inventory.purchases.push(listing) - inventory.save(function(err){ - if(err){ + console.log("added " + listing.name + " from " + listing.seller); + } + }); + let inventory = await Inventory.findOne({ user: req.session.user }).exec(); + if (inventory == null) { + let newinv = new Inventory(); + newinv.user = req.session.user; + newinv.listings = listing; + newinv.save(function (err) { + if (err) { + console.log(err); + return; + } else { + console.log("created new inventory for " + req.session.user); + } + }); + } else { + inventory.listings.push(listing); + inventory.save(function (err) { + if (err) { + console.log(err); + return; + } else { + console.log("pushed new listing"); + } + }); + } + res.redirect("/marketplace/marketdash"); +}); +router.post("/:id/buy", async function (req, res) { + Listing.findOne({ _id: req.params.id }, async function (err, listing) { + let inventory = await Inventory.findOne({ user: req.session.user }).exec(); + if (inventory == null) { + let newinv = new Inventory(); + newinv.user = req.session.user; + newinv.purchases = listing; + newinv.save(function (err) { + if (err) { console.log(err); return; - } else{ - console.log("pushed new purchase") + } else { + console.log("created new inventory for " + req.session.user); } - }) + }); + } else { + inventory.purchases.push(listing); + inventory.save(function (err) { + if (err) { + console.log(err); + return; + } else { + console.log("pushed new purchase"); + } + }); } - Listing.findOneAndRemove({_id:req.params.id}).exec() - transfer = got.post(process.env.BANKAPIURL+'BankF/sendfunds',{ - json:{ + Listing.findOneAndRemove({ _id: req.params.id }).exec(); + transfer = got.post(process.env.BANKAPIURL + "BankF/sendfunds", { + json: { a_name: req.session.user, b_name: listing.seller, - amount: parseInt(listing.amount*listing.price), - attempt: req.session.password + amount: parseInt(listing.amount * listing.price), + attempt: req.session.password, }, - responseType:'json' - }) - res.redirect("/marketplace/marketdash") - }) -}) + responseType: "json", + }); + res.redirect("/marketplace/marketdash"); + }); +}); // this thingy here populates the database with minecraft items only use once otherwise you are gonna flood your database /*router.get('/populatedb', async function(req,res){ @@ -241,8 +235,12 @@ router.post('/:id/buy',async function(req, res){ }) } })*/ - - - - -module.exports = router +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} +module.exports = router; diff --git a/routes/settings.js b/routes/settings.js index 8139588..c1d6ba5 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -1,75 +1,79 @@ -const express = require('express'); +const express = require("express"); const router = express.Router(); -const path = require('path'); -const {ensureAuthenticated} = require("../config/auth.js") -const {checkAdmin} = require ("../config/admin.js") -var pug = require('pug'); -const flash = require ('connect-flash'); -const expressValidator = require('express-validator'); -const session = require('express-session'); -const {postUser} = require('../helpers/functions.js') -const got = require('got') +const path = require("path"); +const { ensureAuthenticated } = require("../config/auth.js"); +const { checkAdmin } = require("../config/admin.js"); +var pug = require("pug"); +const flash = require("connect-flash"); +const expressValidator = require("express-validator"); +const session = require("express-session"); +const { postUser } = require("../helpers/functions.js"); +const got = require("got"); -router.get('/',ensureAuthenticated , function(req, res){ - res.render('settings', { +router.get("/", ensureAuthenticated, function (req, res) { + res.render("settings", { user: req.session.user, admin: req.session.admin, - }) - + }); }); -router.post('/pass', ensureAuthenticated, async function(req, res){ - let {attempt, new_pass, password2} = req.body +router.post("/pass", ensureAuthenticated, async function (req, res) { + let { attempt, new_pass, password2 } = req.body; let patch; let successes = []; let errors = []; - if(!attempt || !new_pass || !password2) { - errors.push({msg : "please fill in all fields"}); + if (!attempt || !new_pass || !password2) { + errors.push({ msg: "please fill in all fields" }); } //check if match - if(new_pass !== password2) { - errors.push({msg : "Passwords don't match"}); + if (new_pass !== password2) { + errors.push({ msg: "Passwords don't match" }); } //check if password is more than 6 characters - if(new_pass.length < 6 ) { - errors.push({msg : 'Password must be at least 6 characters'}) + if (new_pass.length < 6) { + errors.push({ msg: "Password must be at least 6 characters" }); } - if(errors[0]){ - res.render('settings', { - errors:errors, + if (errors[0]) { + res.render("settings", { + errors: errors, user: req.session.user, admin: req.session.admin, - marketplace: process.env.MARKETPLACE - }) + marketplace: process.env.MARKETPLACE, + random: papy(), + }); } - try{ - patch = await got.patch('https://ccash.ryzerth.com/BankF/changepass',{ - json:{ + try { + patch = await got.patch("https://ccash.ryzerth.com/BankF/changepass", { + json: { name: req.session.user, attempt: attempt, new_pass: new_pass, }, - responseType:'json' - }) - } catch(err){ - console.log(err) + responseType: "json", + }); + } catch (err) { + console.log(err); } - console.log(patch) - if(patch.body.value == true){ - successes.push({msg: "Change Password Successful, Please Login Again"}) + console.log(patch); + if (patch.body.value == true) { + successes.push({ msg: "Change Password Successful, Please Login Again" }); } - req.session.regenerate(function(err) { - res.render('login', { + req.session.regenerate(function (err) { + res.render("login", { successes: successes, - errors:errors, - marketplace: process.env.MARKETPLACE - }) - }) -}) - - - - - + errors: errors, + marketplace: process.env.MARKETPLACE, + random: papy(), + }); + }); +}); +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} module.exports = router; diff --git a/views/layout.pug b/views/layout.pug index 5dd3f29..e5bde85 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -5,7 +5,10 @@ html link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css", integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z", crossorigin="anonymous") link(rel="preconnect" href="https://fonts.gstatic.com") link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet") - link(rel='stylesheet' href='/css/style.css') + if random == true + link(rel='stylesheet' href='/css/papy.css') + if random == false || random == null + link(rel='stylesheet' href='/css/style.css') meta(name='viewport', content='width=device-width, initial-scale=1.0') body nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg