Files
Thomas Lynch e7042b3428 Add i18n to bumplock/lock/sticky/cycle, change board/globalsettings, changepassword, and create board pages
Update a bunch of middleware, pages  and libs to destructure i18n funcs if used more than once to not repeat res.locals
ref #396 (going to try and remember this from now on)
2023-02-04 14:52:53 +11:00

55 lines
1.4 KiB
JavaScript

'use strict';
//todo: refactor
const cache = {
one: {}, all: {}, any: {},
};
module.exports = {
one: (requiredPermission) => {
return cache.one[requiredPermission] || (cache.one[requiredPermission] = function(req, res, next) {
if (!res.locals.permissions.get(requiredPermission)) {
const { __ } = res.locals;
return res.status(403).render('message', {
'title': __('Forbidden'),
'message': __('No Permission'),
'redirect': req.headers.referer || '/',
});
}
next();
});
},
all: (...requiredPermissions) => {
//these caches working as intended with arrays?
return cache.all[requiredPermissions] || (cache.all[requiredPermissions] = function(req, res, next) {
if (!res.locals.permissions.hasAll(...requiredPermissions)) {
const { __ } = res.locals;
return res.status(403).render('message', {
'title': __('Forbidden'),
'message': __('No Permission'),
'redirect': req.headers.referer || '/',
});
}
next();
});
},
any: (...requiredPermissions) => {
//these caches working as intended with arrays?
return cache.any[requiredPermissions] || (cache.any[requiredPermissions] = function(req, res, next) {
if (!res.locals.permissions.hasAny(...requiredPermissions)) {
const { __ } = res.locals;
return res.status(403).render('message', {
'title': __('Forbidden'),
'message': __('No Permission'),
'redirect': req.headers.referer || '/',
});
}
next();
});
},
};