changes
This commit is contained in:
@@ -4,6 +4,7 @@ const session = require('express-session');
|
|||||||
const QRCode=require('qrcode');
|
const QRCode=require('qrcode');
|
||||||
const crypto=require('crypto');
|
const crypto=require('crypto');
|
||||||
const path=require('path');
|
const path=require('path');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.set('view engine','ejs');
|
app.set('view engine','ejs');
|
||||||
@@ -30,9 +31,9 @@ const QRSalt ="!SaltyMagic5392370662";
|
|||||||
// + Send email when new tickets are issued/offered
|
// + Send email when new tickets are issued/offered
|
||||||
// + Make one Update button on editcamp (Admin)
|
// + Make one Update button on editcamp (Admin)
|
||||||
// + Make one Update button on manytickets (User)
|
// + Make one Update button on manytickets (User)
|
||||||
// Turn ticket use on/off from Settings (Admin)
|
// + Turn ticket use on/off from Settings (Admin)
|
||||||
// Turn email on/off from Settings (Admin)
|
// + Turn email on/off from Settings (Admin)
|
||||||
// Magic-link Login System
|
// + Magic-link Login System
|
||||||
// Deactivate individual magic links (User)
|
// Deactivate individual magic links (User)
|
||||||
// Deactivate individual magic links (Admin)
|
// Deactivate individual magic links (Admin)
|
||||||
// See how much each camp/ticket has paid (Admin)
|
// See how much each camp/ticket has paid (Admin)
|
||||||
@@ -118,10 +119,10 @@ function MagicLinkValid(email,hash) {
|
|||||||
// };
|
// };
|
||||||
// const camps = { "habitat": { leader: "teppy@egenesis.com", lastid:6 } };
|
// const camps = { "habitat": { leader: "teppy@egenesis.com", lastid:6 } };
|
||||||
|
|
||||||
const users={};
|
let users={};
|
||||||
const tickets={};
|
let tickets={};
|
||||||
const camps={};
|
let camps={};
|
||||||
const settings={};
|
let settings={};
|
||||||
|
|
||||||
function InitDatabase() {
|
function InitDatabase() {
|
||||||
for (const key in users ) delete users[key];
|
for (const key in users ) delete users[key];
|
||||||
@@ -132,6 +133,22 @@ function InitDatabase() {
|
|||||||
}
|
}
|
||||||
InitDatabase();
|
InitDatabase();
|
||||||
|
|
||||||
|
function SerializeAll() {
|
||||||
|
const tables={ users, tickets, camps, settings };
|
||||||
|
fs.writeFileSync('foftickets.json', JSON.stringify(tables, null, 2), 'utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function DeserializeAll() {
|
||||||
|
const data = fs.readFileSync('foftickets.json', 'utf8');
|
||||||
|
const tables = JSON.parse(data);
|
||||||
|
users=tables.users;
|
||||||
|
tickets=tables.tickets;
|
||||||
|
camps=tables.camps;
|
||||||
|
settings=tables.settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Middleware setup
|
// Middleware setup
|
||||||
app.use(bodyParser.urlencoded({ extended: true }));
|
app.use(bodyParser.urlencoded({ extended: true }));
|
||||||
app.use(session({
|
app.use(session({
|
||||||
@@ -542,6 +559,16 @@ app.post('/wipedb',requireSuperUser, (req,res) => {
|
|||||||
res.render('settings',{ username:req.session.username, superuser:req.session.superuser, message: "Wiped the database, but not the logfile." })
|
res.render('settings',{ username:req.session.username, superuser:req.session.superuser, message: "Wiped the database, but not the logfile." })
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.post('/serialize',requireSuperUser, (req,res) => {
|
||||||
|
SerializeAll();
|
||||||
|
res.render('settings',{ username:req.session.username, superuser:req.session.superuser, message: "Wrote database to disk." })
|
||||||
|
});
|
||||||
|
|
||||||
|
app.post('/deserialize',requireSuperUser, (req,res) => {
|
||||||
|
DeserializeAll();
|
||||||
|
res.render('settings',{ username:req.session.username, superuser:req.session.superuser, message: "Read database from disk." })
|
||||||
|
});
|
||||||
|
|
||||||
app.post('/purge',requireSuperUser, (req,res) => {
|
app.post('/purge',requireSuperUser, (req,res) => {
|
||||||
let count=0;
|
let count=0;
|
||||||
for (const t in tickets) if (tickets[t].status=='r') { count++; delete tickets[t]; }
|
for (const t in tickets) if (tickets[t].status=='r') { count++; delete tickets[t]; }
|
||||||
|
|||||||
@@ -16,6 +16,12 @@
|
|||||||
<form action='/wipedb' method='post'>
|
<form action='/wipedb' method='post'>
|
||||||
<button type="submit" >Wipe the Database</button>
|
<button type="submit" >Wipe the Database</button>
|
||||||
</form>
|
</form>
|
||||||
|
<form action='/serialize' method='post'>
|
||||||
|
<button type="submit" >Serialize</button>
|
||||||
|
</form>
|
||||||
|
<form action='/deserialize' method='post'>
|
||||||
|
<button type="submit" >Deserialize</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user