This commit is contained in:
2025-02-25 00:02:58 -05:00
parent f0ef9c621c
commit 99034772c3
2 changed files with 31 additions and 8 deletions

View File

@@ -41,7 +41,10 @@ const QRSalt ="!SaltyMagic5392370662";
// + 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
// Convert all the routes to use common.(user,superuser,
// Display messages for all GET routes?
// Setting to deactivate transfers globally // Setting to deactivate transfers globally
// Option to "Email me my QR Code"
// Mass-import of individual tickets // Mass-import of individual tickets
// + Cookie based QR code functionality // + Cookie based QR code functionality
// + Create Account (User) // + Create Account (User)
@@ -120,6 +123,24 @@ function MagicLinkValid(email,hash) {
} }
app.use((req, res, next) => {
console.log("Middleware! req.session=",req.session);
res.locals.commonData = {
username: req.username, // Attach user info if available
superuser: req.superuser,
error: req.session && req.session.error || null, // Flash error messages
success: req.session && req.session.success || null, // Flash success messages
};
// Clear session-based flash messages after use
if (req.session) {
delete req.session.error;
delete req.session.success;
}
next();
});
// //
// In-memory data structures // In-memory data structures
// //
@@ -514,8 +535,9 @@ app.post('/login', (req, res) => {
const redir=req.session.returnTo; const redir=req.session.returnTo;
delete req.session.returnTo; delete req.session.returnTo;
return res.redirect(redir || "/mytickets"); return res.redirect(redir || "/mytickets");
} }
res.send('Invalid username or password. <a href="/login">Try again</a>'); req.session.error="Invalid username or password.";
return res.redirect("/login");
}); });
app.get('/logout', (req, res) => { app.get('/logout', (req, res) => {
@@ -566,7 +588,7 @@ app.get("/checkscanqr", (req,res) => {
}); });
app.get('/changepassword', requireLogin,(req, res) => { app.get('/changepassword', requireLogin,(req, res) => {
return res.render("changepassword"); return res.render("changepassword",{ username:req.session.username, superuser:req.session.superuser, settings:settings, message: "" });
}); });
app.post('/changepassword', requireLogin,(req, res) => { app.post('/changepassword', requireLogin,(req, res) => {
@@ -595,7 +617,7 @@ app.post('/qrcodesu',requireSuperUser,async (req,res) => {
app.get('/settings',requireSuperUser, (req,res) => { app.get('/settings',requireSuperUser, (req,res) => {
res.render('settings',{ username:req.session.username, superuser:req.session.superuser, message: "" }) res.render('settings',{ username:req.session.username, superuser:req.session.superuser, settings:settings, message: "" })
}); });
app.post('/wipedb',requireSuperUser, (req,res) => { app.post('/wipedb',requireSuperUser, (req,res) => {
@@ -621,6 +643,7 @@ app.post('/purge',requireSuperUser, (req,res) => {
app.post('/update-setting', requireSuperUser, (req, res) => { app.post('/update-setting', requireSuperUser, (req, res) => {
settings[req.body.name]=req.body.checked; settings[req.body.name]=req.body.checked;
console.log("setting got updated to ",settings[req.body.name]);
res.json({ success: true, message: 'Checkbox state updated successfully' }); res.json({ success: true, message: 'Checkbox state updated successfully' });
}); });

View File

@@ -7,10 +7,10 @@
<body> <body>
<%- include('partials/nav') %> <%- include('partials/nav') %>
<div class="content"> <div class="content">
<input type="checkbox" class="setting" name="enable-email">Enable Email<br> <input type="checkbox" class="setting" name="enable-email" <%= settings["enable-email"] ? "checked" : "" %> >Enable Email<br>
<input type="checkbox" class="setting" name="enable-ticket-use">Enable Ticket Use<br> <input type="checkbox" class="setting" name="enable-ticket-use" <%= settings["enable-ticket-use"] ? "checked" : "" %> >Enable Ticket Use<br>
<input type="checkbox" class="setting" name="enable-credit-cards">Enable Credit Cards<br> <input type="checkbox" class="setting" name="enable-credit-cards" <%= settings["enable-credit-cards"] ? "checked" : "" %> >Enable Credit Cards<br>
<input type="checkbox" class="setting" name="enable-transfers">Enable Transfers<br> <input type="checkbox" class="setting" name="enable-transfers" <%= settings["enable-transfers"] ? "checked" : "" %> >Enable Transfers<br>
<form action='/purge' method='post'> <form action='/purge' method='post'>
<button type="submit" >Purge Revoked Tickets</button> <button type="submit" >Purge Revoked Tickets</button>
</form> </form>