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

View File

@ -14,30 +14,17 @@
<div class="container">
<h1>Register</h1>
<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>
<form id="registration-form" method="POST" action="/register">
<div class="mb-3">
<label for="name" class="form-label">Name that goes in email header (full name/username/alias):</label>
<input type="text" class="form-control" id="name" name="name" required>
<ul class="list-group">
<li class="list-group-item">Name that goes in email header (full name/username/alias)</li>
<li class="list-group-item">Desired email address (e.g., yourname@p0ntus.com)</li>
<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 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>
</body>
</html>