Moved redirect check to middleware

This commit is contained in:
Jonathan Barrow
2022-07-10 09:33:19 -04:00
parent accd22112a
commit b6a7b40840
3 changed files with 29 additions and 31 deletions

View File

@@ -0,0 +1,9 @@
async function redirectMiddleware(request, response, next) {
if (request.method === 'POST') {
request.redirect = request.body.redirect?.startsWith('/') ? request.body.redirect : null;
}
return next();
}
module.exports = redirectMiddleware;

View File

@@ -220,7 +220,6 @@ router.get('/login', async (request, response) => {
router.post('/login', async (request, response) => {
const { username, password } = request.body;
let { redirect } = request.body;
let apiResponse = await util.apiPostGetRequest('/v1/login', {}, {
username,
@@ -255,11 +254,7 @@ router.post('/login', async (request, response) => {
response.cookie('ph', encryptedBody.toString('hex'), { domain: '.pretendo.network' });
if (!redirect.startsWith('/')) {
redirect = null;
}
response.redirect(redirect || '/account');
response.redirect(request.redirect || '/account');
});
router.get('/register', async (request, response) => {
@@ -290,7 +285,6 @@ router.get('/register', async (request, response) => {
router.post('/register', async (request, response) => {
const { email, username, mii_name, password, password_confirm, 'h-captcha-response': hCaptchaResponse } = request.body;
let { redirect } = request.body;
response.cookie('email', email, { domain: '.pretendo.network' });
response.cookie('username', username, { domain: '.pretendo.network' });
@@ -316,11 +310,7 @@ router.post('/register', async (request, response) => {
response.clearCookie('username', { domain: '.pretendo.network' });
response.clearCookie('mii_name', { domain: '.pretendo.network' });
if (!redirect.startsWith('/')) {
redirect = null;
}
response.redirect(redirect || '/account');
response.redirect(request.redirect || '/account');
});
router.get('/logout', async(_request, response) => {

View File

@@ -6,9 +6,10 @@ const morgan = require('morgan');
const expressLocale = require('express-locale');
const cookieParser = require('cookie-parser');
const Stripe = require('stripe');
const logger = require('./logger');
const redirectMiddleware = require('./middleware/redirect');
const database = require('./database');
const util = require('./util');
const logger = require('./logger');
const config = require('../config.json');
const defaultLocale = require('../locales/US_en.json');
@@ -19,25 +20,7 @@ const stripe = new Stripe(config.stripe.secret_key);
logger.info('Setting up Middleware');
app.use(morgan('dev'));
app.use(express.urlencoded({ extended: true }));
logger.info('Setting up static public folder');
app.use(express.static('public'));
logger.info('Importing page routers');
const routers = {
home: require('./routers/home'),
faq: require('./routers/faq'),
docs: require('./routers/docs'),
progress: require('./routers/progress'),
account: require('./routers/account'),
blog: require('./routers/blog'),
localization: require('./routers/localization'),
aprilfools: require('./routers/aprilfools')
};
app.use(cookieParser());
// Locale express middleware setup
app.use(expressLocale({
'priority': ['cookie', 'accept-language', 'map', 'default'],
cookie: { name: 'preferredLocale' },
@@ -82,6 +65,22 @@ app.use(expressLocale({
],
'default': 'en-US'
}));
app.use(redirectMiddleware);
logger.info('Setting up static public folder');
app.use(express.static('public'));
logger.info('Importing page routers');
const routers = {
home: require('./routers/home'),
faq: require('./routers/faq'),
docs: require('./routers/docs'),
progress: require('./routers/progress'),
account: require('./routers/account'),
blog: require('./routers/blog'),
localization: require('./routers/localization'),
aprilfools: require('./routers/aprilfools')
};
app.use('/', routers.home);
app.use('/faq', routers.faq);