big changes

- market is now able to be turned off meaning merge to main incoming
 - fixed some bugs and inefficent lines of code
 - added admin ability to change bank api url and mongo url
This commit is contained in:
Expand-sys 2021-05-03 20:58:42 +10:00
parent 9d4770436a
commit 89e49ed454
8 changed files with 179 additions and 38 deletions

View file

@ -14,6 +14,7 @@ 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
@ -64,25 +65,48 @@ app.use(expressValidator({
}
}));
app.post('/setup', async function(req, res){
console.log(req.body)
let mongo = req.body.mongo;
let {mongo, url, banksecure, marketplace} = req.body;
process.env.MONGO = mongo
let apiurl = 'BANKAPIURL='+req.body.url
process.env.BANKAPIURL = req.body.url
let banksecure = 'SECURE=false'
process.env.MARKETPLACE = false
if(marketplace){
process.env.MARKETPLACE = true
}
if(!url.endsWith('/')){
url=url+"/"
}
process.env.BANKAPIURL =url
process.env.SECURE = false
if(req.body.secure){
banksecure = 'SECURE=true'
process.env.SECURE = true
if(!banksecure){
banksecure = false
process.env.SECURE = false
}
process.env.SETUP = true
fs.writeFileSync('.env', apiurl+'\n'+banksecure+'\n'+mongo+'\nSETUP=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,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true,
});
let db = mongoose.connection;
db.once('open', function(){
console.log('Connected to MongoDB');
})
//check for DB errors
db.on('error', function(err){
console.log(err);
});
}
res.redirect('/')
})
app.get('/', async function(req, res){
if(setup==false){
if(!process.env.SETUP){
res.render('setup')
}else{
@ -105,7 +129,8 @@ app.get('/', async function(req, res){
res.render('index', {
user: req.session.user,
admin: req.session.admin,
alive: alive
alive: alive,
marketplace: process.env.MARKETPLACE
})
}
});
@ -179,6 +204,7 @@ app.get('/BankF', ensureAuthenticated, async function(req, res){
user: req.session.user,
admin: req.session.admin,
sucesses: successes,
marketplace: process.env.MARKETPLACE
})
});
@ -267,6 +293,7 @@ app.post('/sendfunds', async function(req, res){
balance:balance.value,
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE
})
}
})
@ -289,7 +316,8 @@ app.post('/register', async function(req, res){
}
if(errors[0]){
res.render('register', {
errors:errors
errors:errors,
marketplace: process.env.MARKETPLACE
})
} else {
if(postUser(name, password)){
@ -297,6 +325,7 @@ app.post('/register', async function(req, res){
res.render('login',{
errors:errors,
successes: successes,
marketplace: process.env.MARKETPLACE
})
}
}
@ -304,6 +333,7 @@ app.post('/register', async function(req, res){
errors.push({msg: "User already exists"})
res.render('register',{
errors:errors,
marketplace: process.env.MARKETPLACE
})
}
})
@ -349,7 +379,8 @@ app.post('/login', async function(req, res){
if(verified.body.value == 0){
errors.push({msg: 'Password wrong'})
res.render('login',{
errors:errors
errors:errors,
marketplace: process.env.MARKETPLACE
})
}else if(verified.body.value == 1){
req.session.user = name;
@ -358,7 +389,8 @@ app.post('/login', async function(req, res){
} else {
errors.push({msg: 'User not found'})
res.render('login',{
errors:errors
errors:errors,
marketplace: process.env.MARKETPLACE
})
}
}
@ -383,6 +415,7 @@ app.use('/marketplace', marketplace)
app.get('/logout', function(req, res){
req.session.regenerate(function(err) {
res.render('login', {
marketplace: process.env.MARKETPLACE
})
})
});
@ -392,6 +425,7 @@ app.get('/login', function(req, res){
req.session.regenerate(function(err) {
res.render('login', {
user: req.session.user,
marketplace: process.env.MARKETPLACE
})
})
});
@ -400,6 +434,7 @@ app.get('/register', function(req, res){
res.render('register', {
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE
})
});

View file

@ -3,20 +3,52 @@ 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 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,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true,
});
let db = mongoose.connection;
db.once('open', function(){
console.log('Connected to MongoDB');
})
//check for DB errors
db.on('error', function(err){
console.log(err);
});
}
}
router.get('/', checkAdmin, function(req, res){
res.render('adminsettings', {
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE
})
});
@ -69,6 +101,7 @@ router.post('/user',checkAdmin , async function(req,res){
user: req.session.user,
admin: req.session.admin,
successes: successes,
marketplace: process.env.MARKETPLACE
})
})
@ -94,6 +127,7 @@ router.post('/baluser',checkAdmin , async function(req,res){
admin: req.session.admin,
successes: successes,
errors: errors,
marketplace: process.env.MARKETPLACE
})
})
@ -121,6 +155,7 @@ router.post('/bal',checkAdmin , async function(req,res){
user: req.session.user,
admin: req.session.admin,
successes: successes,
marketplace: process.env.MARKETPLACE
})
})
router.post('/userdelete', checkAdmin, async function(req,res){
@ -152,6 +187,7 @@ router.post('/userdelete', checkAdmin, async function(req,res){
admin: req.session.admin,
successes: successes,
errors: errors,
marketplace: process.env.MARKETPLACE
})
})
router.post('/destroyallsessions', checkAdmin, async function(req,res) {
@ -180,10 +216,40 @@ router.post('/destroyallsessions', checkAdmin, async function(req,res) {
user: req.session.user,
admin: req.session.admin,
errors: errors,
marketplace: process.env.MARKETPLACE
})
}
})
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
}
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;
let close;

View file

@ -6,25 +6,33 @@ const mongoose = require('mongoose')
const dotenv = require('dotenv');
const got = require('got');
const {ensureAuthenticated} = require("../config/auth.js")
let db
mongoose.connect(process.env.MONGO,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true,
});
let db = mongoose.connection;
function mongo(){
if(process.env.MONGO){
console.log(process.env.MONGO)
mongoose.connect(process.env.MONGO,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true,
});
//check connection
db.once('open', function(){
console.log('Connected to MongoDB');
})
let db = mongoose.connection;
db.once('open', function(){
console.log('Connected to MongoDB');
})
//check for DB errors
db.on('error', function(err){
console.log(err);
});
}
}
mongo()
//check for DB errors
db.on('error', function(err){
console.log(err);
});
let Item = require('../schemas/item')
let Listing = require('../schemas/listing')
@ -46,6 +54,7 @@ router.get('/', function(req, res) {
items: items,
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE
});
}
})
@ -58,6 +67,7 @@ router.get('/marketdash', ensureAuthenticated, function(req,res){
user:req.session.user,
admin:req.session.admin,
inventory:inventory,
marketplace: process.env.MARKETPLACE
})
})
@ -75,6 +85,7 @@ router.get('/:id',function(req, res){
user:req.session.user,
admin:req.session.admin,
item:item,
marketplace: process.env.MARKETPLACE
});
})
});
@ -86,6 +97,7 @@ router.get('/:id/list',ensureAuthenticated, function(req,res){
user:req.session.user,
admin:req.session.admin,
item:item,
marketplace: process.env.MARKETPLACE
});
});
})
@ -98,6 +110,7 @@ router.get('/:id/buy',ensureAuthenticated, function(req,res){
listings:listings,
user:req.session.user,
admin:req.session.admin,
marketplace: process.env.MARKETPLACE
});
});
})

View file

@ -40,6 +40,7 @@ router.post('/pass', ensureAuthenticated, async function(req, res){
errors:errors,
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE
})
}
try{
@ -62,6 +63,7 @@ router.post('/pass', ensureAuthenticated, async function(req, res){
res.render('login', {
successes: successes,
errors:errors,
marketplace: process.env.MARKETPLACE
})
})
})

View file

@ -57,6 +57,27 @@ block content
br
input.btn.btn-primary(type='submit',value='Submit')
br
.card.shadow-lg
h4 Change backend URL
form(method='POST', action='/admin/changebackend')
#form-group
p WARNING DO NOT PUT WRONG URL IN YOU WILL BREAK AND HAVE TO DELETE .ENV FILE TO FIX
p This will change the backend that is being used by the front end
label Enter URL of new BankAPI including trailing slash
input.form-control(name='url', type='url')
br
input.btn.btn-warning(type='submit',value='Submit')
br
.card.shadow-lg
h4 Change backend Mongodb URL
form(method='POST', action='/admin/mongodb')
#form-group
p WARNING DO NOT PUT WRONG URL IN YOU WILL BREAK AND HAVE TO DELETE .ENV FILE TO FIX
label Enter URL of new MongoDB or enter a space to turn off marketplace
input.form-control(name='url', type='text')
br
input.btn.btn-warning(type='submit',value='Submit')
br
.card.shadow-lg
h4 Destroy All Sessions
form(method='POST', action='/admin/destroyallsessions')

View file

@ -23,6 +23,7 @@ html
a.nav-link(href='/login').text-white Login
li.nav-item
a.nav-link(href='/register').text-white Register
if marketplace == true
li.nav-item
a.nav-link(href='/marketplace').text-white MarketPlace
if user
@ -30,10 +31,11 @@ html
a.nav-link(href='/logout').text-white Log out
li.nav-item
a.nav-link(href='/BankF').text-white Bank
li.nav-item
a.nav-link(href='/marketplace').text-white MarketPlace
li.nav-item
a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard
if marketplace == true
li.nav-item
a.nav-link(href='/marketplace').text-white MarketPlace
li.nav-item
a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard
li.nav-item
a.nav-link(href='/settings').text-white Settings
if admin == true

View file

@ -30,10 +30,11 @@ html
a.nav-link(href='/logout').text-white Log out
li.nav-item
a.nav-link(href='/BankF').text-white Bank
li.nav-item
a.nav-link(href='/marketplace').text-white MarketPlace
li.nav-item
a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard
if marketplace == true
li.nav-item
a.nav-link(href='/marketplace').text-white MarketPlace
li.nav-item
a.nav-link(href='/marketplace/marketdash').text-white MarketPlace-Dashboard
li.nav-item
a.nav-link(href='/settings').text-white Settings
if admin == true

View file

@ -11,10 +11,11 @@ block content
input.form-control(name='url', type='url')
label SSL enabled on front end? leave unchecked if unsure:
input.form-control(name='secure', type='checkbox')
label MongoDB url
label Enable marketplace:
input.form-control(name='marketplace', type='checkbox')
label MongoDB url insert if using marketplace
input.form-control(name='mongo', type='text')
br
input.btn.btn-primary(type='submit',value='Submit')
br
br
h2 THESE SETTINGS WILL REQUIRE A RESTART TO APPLY