disable form, use email submissions until form perfected

This commit is contained in:
Aidan 2024-12-04 13:11:08 -05:00
parent 220646e688
commit 3658464bd9
2 changed files with 48 additions and 59 deletions

76
app.js
View File

@ -1,33 +1,32 @@
const express = require('express'); const express = require('express');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const path = require('path'); const path = require('path');
const winston = require('winston'); //const winston = require('winston');
const rateLimit = require('express-rate-limit'); //const rateLimit = require('express-rate-limit');
const fs = require('fs'); //const fs = require('fs');
const logger = winston.createLogger({ //const logger = winston.createLogger({
level: 'info', // level: 'info',
format: winston.format.combine( // format: winston.format.combine(
winston.format.timestamp(), // winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => { // winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} [${level.toUpperCase()}] ${message}`; // return `${timestamp} [${level.toUpperCase()}] ${message}`;
}) // })
), // ),
transports: [ // transports: [
new winston.transports.File({ filename: 'register.log' }) // new winston.transports.File({ filename: 'register.log' })
], // ],
}); //});
const exclusions = JSON.parse(fs.readFileSync('exclusions.json', 'utf8')).excludedIPs; //const exclusions = JSON.parse(fs.readFileSync('exclusions.json', 'utf8')).excludedIPs;
//const registerLimiter = rateLimit({
const registerLimiter = rateLimit({ // windowMs: 24 * 60 * 60 * 1000,
windowMs: 24 * 60 * 60 * 1000, // max: 1,
max: 1, // message: 'You have already submitted a registration today. Please try again tomorrow.',
message: 'You have already submitted a registration today. Please try again tomorrow.', // standardHeaders: true,
standardHeaders: true, // legacyHeaders: false,
legacyHeaders: false, // skip: (req, res) => exclusions.includes(req.ip)
skip: (req, res) => exclusions.includes(req.ip) //});
});
const app = express(); const app = express();
@ -42,19 +41,22 @@ app.get('/', (req, res) => {
res.render('index'); res.render('index');
}); });
app.post('/register', registerLimiter, (req, res) => { //app.post('/register', registerLimiter, (req, res) => {
const formData = req.body; // const formData = req.body;
logger.info(`New registration: // logger.info(`New registration:
Name: ${formData.name} // Name: ${formData.name}
Email: ${formData.email} // Email: ${formData.email}
Reason: ${formData.message} // Reason: ${formData.message}
Telegram: ${formData.telegram}`); // Telegram: ${formData.telegram}`);
res.render('success'); // res.render('success');
}); //});
app.get('/success', (req, res) => { // Shelved for now
res.render('success'); // Logic needs improvements
});
//app.get('/success', (req, res) => {
// res.render('success');
//});
app.get('/register', (req, res) => { app.get('/register', (req, res) => {
res.render('register'); res.render('register');

View File

@ -14,30 +14,17 @@
<div class="container"> <div class="container">
<h1>Register</h1> <h1>Register</h1>
<h3>Registration is done via email</h3> <h3>Registration is done via email</h3>
<i>Fill out the form and send your email to receive your credentials.</i> <i>Please contact <a href="mailto:signup@p0ntus.com">signup<i class="fa-solid fa-at"></i>p0ntus.com</a> with the following info:</i>
<hr> <hr>
<form id="registration-form" method="POST" action="/register"> <ul class="list-group">
<div class="mb-3"> <li class="list-group-item">Name that goes in email header (full name/username/alias)</li>
<label for="name" class="form-label">Name that goes in email header (full name/username/alias):</label> <li class="list-group-item">Desired email address (e.g., yourname@p0ntus.com)</li>
<input type="text" class="form-control" id="name" name="name" required> <li class="list-group-item">Reason for wanting an email</li>
<li class="list-group-item">Telegram username</li>
</ul>
<hr>
<a href="/" class="btn bg-dark text-white"><i class="fa-solid fa-home ico-sm"></i> Return to Home</a>
</div> </div>
<div class="mb-3">
<label for="email" class="form-label">I would like this email:</label>
<input type="text" class="form-control" id="email" name="email" required>
<div class="form-text">Your email will be: <span id="email-prefix">name</span>@p0ntus.com</div>
</div>
<div class="mb-3">
<label for="message" class="form-label">I want an email because:</label>
<textarea class="form-control" id="message" name="message" rows="3" required></textarea>
</div>
<div class="mb-3">
<label for="telegram" class="form-label">Telegram username:</label>
<input type="text" class="form-control" id="telegram" name="telegram" required>
</div>
<button type="submit" class="btn bg-dark text-white"><i class="fa-solid fa-envelope ico-sm"></i> Send</button>
</form>
</div>
<script src="/src/js/checkUsernameInput.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>