locale checking moved to middleware

This commit is contained in:
Jonathan Barrow 2022-07-10 10:27:57 -04:00
parent b6a7b40840
commit 13c8c24efe
9 changed files with 22 additions and 37 deletions

13
src/middleware/locale.js Normal file
View File

@ -0,0 +1,13 @@
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

@ -33,8 +33,6 @@ router.get('/', async (request, response) => {
// Setup the data to be sent to the handlebars renderer
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
success: request.cookies.success,
error: request.cookies.error
};
@ -206,8 +204,6 @@ router.get('/', async (request, response) => {
router.get('/login', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
error: request.cookies.error
};
@ -260,8 +256,6 @@ router.post('/login', async (request, response) => {
router.get('/register', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
error: request.cookies.error,
email: request.cookies.email,
username: request.cookies.username,
@ -480,10 +474,6 @@ router.get('/online-files', async (request, response) => {
});
router.get('/miieditor', async (request, response) => {
const reqLocale = request.locale;
const locale = util.getLocale(reqLocale.region, reqLocale.language);
// Should obviously be the user's
const encodedUserMiiData = 'AwAAQOlVognnx0GC2X0LLQOzuI0n2QAAAUBiAGUAbABsAGEAAABFAAAAAAAAAEBAEgCBAQRoQxggNEYUgRIXaA0AACkDUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP6G';
@ -530,8 +520,6 @@ router.get('/miieditor', async (request, response) => {
response.render('account/miieditor', {
layout: 'main',
locale,
localeString: reqLocale.toString(),
encodedUserMiiData,
editorToHex
});
@ -583,8 +571,6 @@ router.get('/upgrade', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
error: request.cookies.error,
currentTier: pnid.get('connections.stripe.price_id'),
donationCache: await cache.getStripeDonationCache()

View File

@ -5,9 +5,7 @@ const router = new Router();
router.get('/', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
layout: 'main'
};
renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph;

View File

@ -38,8 +38,6 @@ const postList = () => {
router.get('/', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
postList,
};
@ -74,8 +72,6 @@ router.get('/:slug', async (request, response, next) => {
const renderData = {
layout: 'blog-opengraph',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
postList,
};

View File

@ -13,8 +13,6 @@ router.get('/', async (request, response) => {
router.get('/search', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
currentPage: request.params.slug,
};
@ -31,8 +29,6 @@ router.get('/search', async (request, response) => {
router.get('/:slug', async (request, response, next) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
currentPage: request.params.slug,
};
@ -46,10 +42,10 @@ router.get('/:slug', async (request, response, next) => {
// Get the name of the page from the URL
const pageName = request.params.slug;
let markdownLocale = renderData.localeString;
let markdownLocale = response.locals.localeString;
let missingInLocale = false;
// Check if the MD file exists in the user's locale, if not try en-US and show notice, or finally log error and show 404.
if (fs.existsSync(path.join('docs', renderData.localeString, `${pageName}.md`))) {
if (fs.existsSync(path.join('docs', markdownLocale, `${pageName}.md`))) {
null;
} else if (fs.existsSync(path.join('docs', 'en-US', `${pageName}.md`))) {
markdownLocale = 'en-US';

View File

@ -9,9 +9,7 @@ router.get('/', async (request, response) => {
const renderData = {
layout: 'main',
boards,
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
boards
};
renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph;
@ -26,7 +24,7 @@ router.get('/', async (request, response) => {
// Builds the arrays of people for the special thanks section
// Shuffles the special thanks people
const specialThanksPeople = renderData.locale.specialThanks.people.slice();
const specialThanksPeople = response.locals.locale.specialThanks.people.slice();
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));

View File

@ -4,9 +4,7 @@ const router = new Router();
router.get('/', async (request, response) => {
const renderData = {
layout: 'main',
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
layout: 'main'
};
renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph;

View File

@ -8,9 +8,7 @@ const { getTrelloCache, getStripeDonationCache } = require('../cache');
router.get('/', async (request, response) => {
const renderData = {
layout: 'main',
boards,
locale: util.getLocale(request.locale.region, request.locale.language),
localeString: request.locale.toString(),
boards
};
renderData.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token && request.cookies.ph;

View File

@ -7,6 +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 database = require('./database');
const util = require('./util');
const logger = require('./logger');
@ -66,6 +67,7 @@ app.use(expressLocale({
'default': 'en-US'
}));
app.use(redirectMiddleware);
app.use(localeMiddleware);
logger.info('Setting up static public folder');
app.use(express.static('public'));