jschan - Anonymous imageboard software. Classic look, modern features and feel. Works without JavaScript and supports Tor, I2P, Lokinet, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

37 lines
877 B

'use strict';
const { Roles } = require(__dirname+'/../../db/')
, redis = require(__dirname+'/../redis/redis.js')
, Permission = require(__dirname+'/permission.js');
const load = async () => {
//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) => {
acc[r.name] = new Permission(r.permissions.toString('base64'));
return acc;
}, {});
module.exports.roles = roles;
module.exports.roleNameMap = {
[roles.ANON.base64]: 'Regular User',
[roles.BOARD_STAFF.base64]: 'Board Staff',
[roles.BOARD_OWNER.base64]: 'Board Owner',
[roles.GLOBAL_STAFF.base64]: 'Global Staff',
[roles.ADMIN.base64]: 'Admin',
[roles.ROOT.base64]: 'Root',
};
};
redis.addCallback('roles', load);
module.exports = {
roles: {},
roleNameMap: {},
load,
};