mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 05:14:23 +00:00
setup app complete
This commit is contained in:
@@ -9,13 +9,11 @@
|
||||
|
||||
const db = require( '../../backend/db/db.js' );
|
||||
const pwdmanager = require( '../pwdmanager.js' );
|
||||
const fs = require( 'fs' );
|
||||
const path = require( 'path' );
|
||||
const pm = require( '../../backend/plugins/manager.js' );
|
||||
const spm = require( '../startPageManager.js' );
|
||||
const startPageManager = new spm();
|
||||
|
||||
const letters = [ ',', '{' ];
|
||||
|
||||
|
||||
class POSTHandler {
|
||||
constructor ( settings ) {
|
||||
@@ -154,18 +152,7 @@ class POSTHandler {
|
||||
this.settings[ 'currency' ] = data.currency;
|
||||
this.settings[ 'payments' ] = data.payments;
|
||||
this.settings[ 'ticketTimeout' ] = data.ticketTimeout;
|
||||
const settingsString = JSON.stringify( this.settings );
|
||||
let settingsToSave = '';
|
||||
for ( let letter in settingsString ) {
|
||||
if ( letters.includes( settingsString[ letter ] ) ) {
|
||||
settingsToSave += settingsString[ letter ] + '\n\t';
|
||||
} else if ( settingsString[ letter ] === '}' ) {
|
||||
settingsToSave += '\n' + settingsString[ letter ];
|
||||
} else {
|
||||
settingsToSave += settingsString[ letter ];
|
||||
}
|
||||
}
|
||||
fs.writeFileSync( path.join( __dirname + '/../../config/settings.config.json' ), settingsToSave );
|
||||
db.saveSettings( this.settings );
|
||||
db.getJSONData( 'events' ).then( dat => {
|
||||
let updated = dat;
|
||||
for ( let event in updated ) {
|
||||
|
||||
@@ -39,7 +39,8 @@ module.exports = ( app ) => {
|
||||
if ( tickets[ event ] ) {
|
||||
if ( tickets[ event ][ ticket ] ) {
|
||||
if ( !tickets[ event ][ ticket ][ 'invalidated' ] ) {
|
||||
// TODO: invalidate ticket!
|
||||
tickets[ event ][ ticket ][ 'invalidated' ] = true;
|
||||
db.writeDataSimple( 'orders', 'order_name', req.body.ticketID.slice( 0, req.body.ticketID.indexOf( '_' ) ), { 'tickets': JSON.stringify( tickets ) } );
|
||||
res.send( 'ticketValid' );
|
||||
} else {
|
||||
res.send( 'ticketInvalid' );
|
||||
|
||||
@@ -11,6 +11,7 @@ let createSSRApp = require( 'vue' ).createSSRApp;
|
||||
let renderToString = require( 'vue/server-renderer' ).renderToString;
|
||||
const fs = require( 'fs' );
|
||||
const path = require( 'path' );
|
||||
const db = require( '../backend/db/db.js' );
|
||||
|
||||
class StartPageManager {
|
||||
constructor ( settings ) {
|
||||
@@ -42,7 +43,7 @@ class StartPageManager {
|
||||
|
||||
setActiveStartPage( startPageName ) {
|
||||
this.settings[ 'startPage' ] = startPageName;
|
||||
fs.writeFileSync( path.join( __dirname + '/../config/settings.config.json' ), JSON.stringify( this.settings ) );
|
||||
db.saveSettings( this.settings );
|
||||
}
|
||||
|
||||
async renderStartPage( startPageName ) {
|
||||
|
||||
@@ -15,6 +15,7 @@ const cookieParser = require( 'cookie-parser' );
|
||||
const http = require( 'http' );
|
||||
const fs = require( 'fs' );
|
||||
const token = require( './backend/token.js' );
|
||||
const db = require( './backend/db/db.js' );
|
||||
|
||||
console.log( `
|
||||
|
||||
@@ -58,7 +59,12 @@ if ( settings.setupDone ) {
|
||||
} );
|
||||
}
|
||||
|
||||
// TODO: If no init, initialize DB.
|
||||
if ( !settings.init ) {
|
||||
db.initDB();
|
||||
let mutSettings = settings;
|
||||
mutSettings[ 'init' ] = true;
|
||||
db.saveSettings( mutSettings );
|
||||
}
|
||||
|
||||
|
||||
// Set up static routes for static file serving (performance wise not
|
||||
|
||||
@@ -14,6 +14,8 @@ const settings = JSON.parse( fs.readFileSync( path.join( __dirname + '/../../con
|
||||
|
||||
const dbRef = { 'user': 'libreevent_users', 'admin': 'libreevent_admin', 'order': 'libreevent_orders', 'users': 'libreevent_users', 'orders': 'libreevent_orders', 'temp': 'libreevent_temp' };
|
||||
|
||||
const letters = [ ',', '{' ];
|
||||
|
||||
let dbh;
|
||||
|
||||
if ( settings.db === 'mysql' ) {
|
||||
@@ -26,6 +28,14 @@ if ( settings.db === 'mysql' ) {
|
||||
dbh.connect();
|
||||
}
|
||||
|
||||
module.exports.initDB = () => {
|
||||
( async() => {
|
||||
console.log( '[ DB ] Setting up...' );
|
||||
await dbh.setupDB();
|
||||
console.log( '[ DB ] Setting up complete!' );
|
||||
} )();
|
||||
};
|
||||
|
||||
module.exports.getDataSimple = ( db, column, searchQuery ) => {
|
||||
return new Promise( ( resolve, reject ) => {
|
||||
dbh.query( { 'command': 'getFilteredData', 'property': column, 'searchQuery': searchQuery }, dbRef[ db ] ).then( data => {
|
||||
@@ -185,6 +195,21 @@ module.exports.deleteJSONDataSimple = ( db, identifier ) => {
|
||||
} );
|
||||
};
|
||||
|
||||
module.exports.saveSettings = ( settings ) => {
|
||||
const settingsString = JSON.stringify( settings );
|
||||
let settingsToSave = '';
|
||||
for ( let letter in settingsString ) {
|
||||
if ( letters.includes( settingsString[ letter ] ) ) {
|
||||
settingsToSave += settingsString[ letter ] + '\n\t';
|
||||
} else if ( settingsString[ letter ] === '}' ) {
|
||||
settingsToSave += '\n' + settingsString[ letter ];
|
||||
} else {
|
||||
settingsToSave += settingsString[ letter ];
|
||||
}
|
||||
}
|
||||
fs.writeFileSync( path.join( __dirname + '/../../config/settings.config.json' ), settingsToSave );
|
||||
};
|
||||
|
||||
const gc = () => {
|
||||
// this function acts as the database garbage collector. TicketTimeout can be changed from the GUI.
|
||||
this.getData( 'temp' ).then( tempData => {
|
||||
|
||||
@@ -22,7 +22,10 @@ class JSONDB {
|
||||
let data = {};
|
||||
try {
|
||||
JSON.parse( fs.readFileSync( path.join( __dirname + '/data/db.json' ) ) );
|
||||
} catch ( err ) {}
|
||||
} catch ( err ) {
|
||||
console.error( '[ JSON-DB ] CRITICAL INITIALIZATION FAILURE!' + err );
|
||||
throw ( 'JSONDB failed to start!' );
|
||||
}
|
||||
this.db = data[ 'db' ] ?? { 'libreevent_temp': {}, 'libreevent_admin': {}, 'libreevent_orders': {}, 'libreevent_users': {} };
|
||||
this.dbIndex = data[ 'index' ] ?? { 'libreevent_temp': 0, 'libreevent_admin': 0, 'libreevent_orders': 0, 'libreevent_users': 0 };
|
||||
this.db[ 'libreevent_temp' ] = {};
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"init":false,
|
||||
"setupDone": true,
|
||||
"twoFA":"enforce",
|
||||
"twoFAMode":"enhanced",
|
||||
"db":"mysql",
|
||||
"payments":"stripe",
|
||||
"name":"libreevent",
|
||||
"yourDomain":"http://localhost:8080",
|
||||
"mailSender":"libreevent <info@libreevent.janishutz.com>",
|
||||
"maxTickets":10,
|
||||
"currency":"CHF",
|
||||
"gcInterval":300,
|
||||
"ticketTimeout":900,
|
||||
"startPage":"default",
|
||||
"version":"1.0.0"
|
||||
"init":true,
|
||||
"setupDone":true,
|
||||
"twoFA":"enforce",
|
||||
"twoFAMode":"enhanced",
|
||||
"db":"mysql",
|
||||
"payments":"stripe",
|
||||
"name":"libreevent",
|
||||
"yourDomain":"http://localhost:8080",
|
||||
"mailSender":"libreevent <no-reply@libreevent.janishutz.com>",
|
||||
"maxTickets":10,
|
||||
"currency":"CHF",
|
||||
"gcInterval":300,
|
||||
"ticketTimeout":900,
|
||||
"startPage":"default",
|
||||
"version":"1.0.0"
|
||||
}
|
||||
@@ -7,7 +7,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
let db = null;
|
||||
// let db = null;
|
||||
let db = require( '../backend/db/db.js' );
|
||||
const pwm = require( '../admin/pwdmanager.js' );
|
||||
const fs = require( 'fs' );
|
||||
const path = require( 'path' );
|
||||
const bodyParser = require( 'body-parser' );
|
||||
@@ -30,7 +32,38 @@ module.exports = ( app, settings ) => {
|
||||
if ( req.session.setupKeyOk ) {
|
||||
res.send( 'ok' );
|
||||
} else {
|
||||
res.status( 403 ).send( 'not authorized' );
|
||||
res.status( 403 ).send( 'unauthorized' );
|
||||
}
|
||||
} );
|
||||
|
||||
app.post( '/setup/saveBasicSettings', bodyParser.json(), ( req, res ) => {
|
||||
if ( req.session.setupKeyOk ) {
|
||||
fs.writeFileSync( path.join( __dirname + '/../config/db.config.json' ), JSON.stringify( req.body.db ) );
|
||||
fs.writeFileSync( path.join( __dirname + '/../config/mail.config.json' ), JSON.stringify( req.body.email ) );
|
||||
if ( db === null ) {
|
||||
db = require( '../backend/db/db.js' );
|
||||
}
|
||||
let updatedSettings = settings;
|
||||
updatedSettings[ 'name' ] = req.body.websiteName;
|
||||
updatedSettings[ 'mailSender' ] = req.body.mailDisplay;
|
||||
db.saveSettings( updatedSettings );
|
||||
res.send( 'ok' );
|
||||
} else {
|
||||
res.status( 403 ).send( 'unauthorized' );
|
||||
}
|
||||
} );
|
||||
|
||||
app.post( '/setup/saveRootAccount', bodyParser.json(), ( req, res ) => {
|
||||
if ( req.session.setupKeyOk ) {
|
||||
pwm.hashPassword( req.body.password ).then( hash => {
|
||||
db.writeJSONData( 'rootAccount', { 'pass': hash, 'email': req.body.mail } );
|
||||
let updatedSettings = settings;
|
||||
updatedSettings[ 'setupDone' ] = true;
|
||||
db.saveSettings( updatedSettings );
|
||||
res.send( 'ok' );
|
||||
} );
|
||||
} else {
|
||||
res.status( 403 ).send( 'unauthorized' );
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user