Moved cookie messages to middleware

This commit is contained in:
Jonathan Barrow 2022-07-10 12:22:15 -04:00
parent 0696dddaaf
commit 02da4c10cd
5 changed files with 40 additions and 44 deletions

View File

@ -1,13 +0,0 @@
const util = require('../util');
async function localeMiddleware(request, response, next) {
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
response.locals.locale = locale;
response.locals.localeString = reqLocale.toString();
return next();
}
module.exports = localeMiddleware;

View File

@ -0,0 +1,22 @@
const util = require('../util');
async function renderDataMiddleware(request, response, next) {
// Get user local
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
response.locals.locale = locale;
response.locals.localeString = reqLocale.toString();
// Get message cookies
response.locals.success_message = request.cookies.success_message;
response.locals.error_message = request.cookies.error_message;
// Reset message cookies
response.clearCookie('success_message', { domain: '.pretendo.network' });
response.clearCookie('error_message', { domain: '.pretendo.network' });
return next();
}
module.exports = renderDataMiddleware;

View File

@ -31,14 +31,7 @@ router.get('/', async (request, response) => {
}
// Setup the data to be sent to the handlebars renderer
const renderData = {
success: request.cookies.success,
error: request.cookies.error
};
// Reset message cookies
response.clearCookie('success', { domain: '.pretendo.network' });
response.clearCookie('error', { domain: '.pretendo.network' });
const renderData = {};
// Check for Stripe messages
const { upgrade_success } = request.query;
@ -201,13 +194,7 @@ router.get('/', async (request, response) => {
});
router.get('/login', async (request, response) => {
const renderData = {
error: request.cookies.error
};
response.clearCookie('error', { domain: '.pretendo.network' });
response.render('account/login', renderData);
response.render('account/login');
});
router.post('/login', async (request, response) => {
@ -220,7 +207,7 @@ router.post('/login', async (request, response) => {
});
if (apiResponse.statusCode !== 200) {
response.cookie('error', apiResponse.body.error, { domain: '.pretendo.network' });
response.cookie('error_message', apiResponse.body.error, { domain: '.pretendo.network' });
return response.redirect('/account/login');
}
@ -251,13 +238,11 @@ router.post('/login', async (request, response) => {
router.get('/register', async (request, response) => {
const renderData = {
error: request.cookies.error,
email: request.cookies.email,
username: request.cookies.username,
mii_name: request.cookies.mii_name,
};
response.clearCookie('error', { domain: '.pretendo.network' });
response.clearCookie('email', { domain: '.pretendo.network' });
response.clearCookie('username', { domain: '.pretendo.network' });
response.clearCookie('mii_name', { domain: '.pretendo.network' });
@ -277,7 +262,7 @@ router.post('/register', async (request, response) => {
});
if (apiResponse.statusCode !== 200) {
response.cookie('error', apiResponse.body.error, { domain: '.pretendo.network' });
response.cookie('error_message', apiResponse.body.error, { domain: '.pretendo.network' });
return response.redirect('/account/register');
}
@ -287,7 +272,6 @@ router.post('/register', async (request, response) => {
response.cookie('access_token', tokens.access_token, { domain: '.pretendo.network' });
response.cookie('token_type', tokens.token_type, { domain: '.pretendo.network' });
response.clearCookie('error', { domain: '.pretendo.network' });
response.clearCookie('email', { domain: '.pretendo.network' });
response.clearCookie('username', { domain: '.pretendo.network' });
response.clearCookie('mii_name', { domain: '.pretendo.network' });
@ -314,7 +298,7 @@ router.get('/connect/discord', async (request, response) => {
grantType: 'authorization_code',
});
} catch (error) {
response.cookie('error', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' });
response.cookie('error_message', 'Invalid Discord authorization code. Please try again', { domain: '.pretendo.network' });
return response.redirect('/account');
}
@ -371,7 +355,9 @@ router.get('/connect/discord', async (request, response) => {
}
}
response.cookie('success', 'Discord account linked successfully', { domain: '.pretendo.network' }).redirect('/account');
response.cookie('success_message', 'Discord account linked successfully', { domain: '.pretendo.network' });
response.redirect('/account');
});
router.get('/online-files', async (request, response) => {
@ -662,7 +648,7 @@ router.post('/stripe/checkout/:priceId', async (request, response) => {
const pnid = await database.PNID.findOne({ pid });
if (pnid.get('access_level') >= 2) {
response.cookie('error', 'Staff members do not need to purchase tiers', { domain: '.pretendo.network' });
response.cookie('error_message', 'Staff members do not need to purchase tiers', { domain: '.pretendo.network' });
return response.redirect('/account');
}
@ -684,7 +670,8 @@ router.post('/stripe/checkout/:priceId', async (request, response) => {
} catch (error) {
// Maybe we need a dedicated error page?
// Or handle this as not cookies?
response.cookie('error', error.message, { domain: '.pretendo.network' });
response.cookie('error_message', error.message, { domain: '.pretendo.network' });
return response.redirect('/account');
}
});
@ -756,7 +743,7 @@ router.post('/stripe/unsubscribe', async (request, response) => {
} catch (error) {
logger.error(`Error canceling old user subscription | ${pnid.get('connections.stripe.customer_id')}, ${pid}, ${subscriptionId} | - ${error.message}`);
response.cookie('error', 'Error canceling subscription! Contact support if issue persists', { domain: '.pretendo.network' });
response.cookie('error_message', 'Error canceling subscription! Contact support if issue persists', { domain: '.pretendo.network' });
return response.redirect('/account');
}

View File

@ -7,7 +7,7 @@ const expressLocale = require('express-locale');
const cookieParser = require('cookie-parser');
const Stripe = require('stripe');
const redirectMiddleware = require('./middleware/redirect');
const localeMiddleware = require('./middleware/locale');
const renderDataMiddleware = require('./middleware/render-data');
const database = require('./database');
const util = require('./util');
const logger = require('./logger');
@ -67,7 +67,7 @@ app.use(expressLocale({
'default': 'en-US'
}));
app.use(redirectMiddleware);
app.use(localeMiddleware);
app.use(renderDataMiddleware);
logger.info('Setting up static public folder');
app.use(express.static('public'));

View File

@ -156,18 +156,18 @@
</div>
{{#if success}}
{{#if success_message}}
<div class="banner-notice success">
<div>
<p>{{success}}</p>
<p>{{success_message}}</p>
</div>
</div>
{{/if}}
{{#if error}}
{{#if error_message}}
<div class="banner-notice error">
<div>
<p>{{error}}</p>
<p>{{error_message}}</p>
</div>
</div>
{{/if}}