Make roles update on edits and fix map imports, so the role names show correctly after edt

merge-requests/346/merge
Thomas Lynch 2 years ago
parent 993924a5f2
commit e511c67efa
  1. 2
      helpers/render.js
  2. 11
      helpers/roles.js
  3. 3
      models/forms/editrole.js
  4. 2
      models/pages/globalmanage/accounts.js
  5. 2
      models/pages/globalmanage/editrole.js
  6. 6
      models/pages/globalmanage/roles.js
  7. 10
      redis.js
  8. 1
      server.js
  9. 2
      views/pages/globalmanageroles.pug

@ -12,7 +12,6 @@ const { outputFile } = require('fs-extra')
, { version } = require(__dirname+'/../package.json')
, templateDirectory = path.join(__dirname+'/../views/pages/')
, Permissions = require(__dirname+'/permissions.js')
, { roleNameMap } = require(__dirname+'/roles.js')
, config = require(__dirname+'/../config.js');
let { archiveLinksURL, lockWait, globalLimits, boardDefaults, cacheTemplates,
@ -23,7 +22,6 @@ const updateLocals = () => {
({ archiveLinksURL, lockWait, globalLimits, boardDefaults, cacheTemplates,
reverseImageLinksURL, meta, enableWebring, captchaOptions, globalAnnouncement } = config.get);
renderLocals = {
roleNameMap,
Permissions,
cache: cacheTemplates,
archiveLinksURL,

@ -8,8 +8,8 @@ const { Roles } = require(__dirname+'/../db/')
const load = async () => {
//todo: take a message argument from callback,
//maybe need separate func just for reloading single role
//todo: take a message argument from callback
//maybe make it a separate func just for reloading single role?
let roles = await Roles.find();
roles = roles.reduce((acc, r) => {
@ -37,14 +37,9 @@ const load = async () => {
[ROOT.base64]: 'Root',
};
// put in role edit model on successful edit
// redis.redisPublisher.publish('roles', JSON.stringify({/*ROLES OBJECT, make */}));
};
//possibly, will call a different function like "updaterole", with mesage for single
//role name, for when a role is edited
//redis.addCallback('roles', load);
redis.addCallback('roles', load);
module.exports = {
roles: {},

@ -1,6 +1,7 @@
'use strict';
const { Roles } = require(__dirname+'/../../db/')
, redis = require(__dirname+'/../../redis.js')
, dynamicResponse = require(__dirname+'/../../helpers/dynamic.js')
, Permissions = require(__dirname+'/../../helpers/permissions.js')
, Permission = require(__dirname+'/../../helpers/permission.js');
@ -63,6 +64,8 @@ module.exports = async (req, res, next) => {
});
}
redis.redisPublisher.publish('roles', null);
return dynamicResponse(req, res, 200, 'message', {
'title': 'Success',
'message': 'Edited role',

@ -1,6 +1,7 @@
'use strict';
const { Accounts } = require(__dirname+'/../../../db/')
, roles = require(__dirname+'/../../../helpers/roles.js')
, pageQueryConverter = require(__dirname+'/../../../helpers/pagequeryconverter.js')
, limit = 20;
@ -48,6 +49,7 @@ module.exports = async (req, res, next) => {
accounts,
page,
maxPage,
roleNameMap: roles.roleNameMap,
});
}

@ -1,6 +1,7 @@
'use strict';
const { Roles } = require(__dirname+'/../../../db/')
, roles = require(__dirname+'/../../../helpers/roles.js')
, Permission = require(__dirname+'/../../../helpers/permission.js');
module.exports = async (req, res, next) => {
@ -18,6 +19,7 @@ module.exports = async (req, res, next) => {
csrf: req.csrfToken(),
role,
rolePermissions: new Permission(role.permissions),
roleNameMap: roles.roleNameMap,
});
}

@ -1,17 +1,19 @@
'use strict';
const { Roles } = require(__dirname+'/../../../db/')
, roles = require(__dirname+'/../../../helpers/roles.js');
module.exports = async (req, res, next) => {
const roles = await Roles.find();
const allRoles = await Roles.find();
res
.set('Cache-Control', 'private, max-age=5')
.render('globalmanageroles', {
csrf: req.csrfToken(),
permissions: res.locals.permissions,
roles,
allRoles,
roleNameMap: roles.roleNameMap,
});
}

@ -29,9 +29,17 @@ module.exports = {
return console.error(err);
}
});
subscriber.subscribe('roles', (err, count) => {
if (err) {
return console.error(err);
}
});
subscriber.on("message", (channel, message) => {
secrets.debugLogs && console.log(`Subscriber message from channel ${channel}`);
const data = JSON.parse(message);
let data;
if (message) {
data = JSON.parse(message);
}
messageCallbacks[channel].forEach(cb => {
cb(data);
});

@ -38,7 +38,6 @@ const config = require(__dirname+'/config.js')
// load roles early
const roles = require(__dirname+'/helpers/roles.js');
await roles.load();
app.locals.roleNameMap = roles.roleNameMap;
// disable useless express header
app.disable('x-powered-by');

@ -15,7 +15,7 @@ block content
tr
th Role
th Permissions
for role in roles
for role in allRoles
tr
td #{roleNameMap[role.permissions.toString('base64')]}
td: a(href=`/globalmanage/editrole/${role._id}.html`) [Edit]

Loading…
Cancel
Save