website/src/middleware/render-data.js
2022-08-11 20:02:33 -04:00

43 lines
1.3 KiB
JavaScript

const util = require('../util');
const database = require('../database');
async function renderDataMiddleware(request, response, next) {
if (request.path.startsWith('/assets')) {
return 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' });
response.locals.isLoggedIn = request.cookies.access_token && request.cookies.refresh_token;
if (response.locals.isLoggedIn) {
try {
response.locals.account = await util.getUserAccountData(request, response);
request.pnid = await database.PNID.findOne({ pid: response.locals.account.pid });
request.account = response.locals.account;
return next();
} catch (error) {
response.cookie('error_message', error.message, { domain: '.pretendo.network' });
return response.redirect('/account/logout');
}
} else {
return next();
}
}
module.exports = renderDataMiddleware;