refactor: privileges.x.get() to not used hardcoded privs

This commit is contained in:
Julian Lam
2020-06-03 19:29:43 -04:00
parent 0bd21009c8
commit 678ffe598a
4 changed files with 19 additions and 39 deletions

View File

@@ -52,6 +52,7 @@ module.exports = function (middleware) {
custom_header: plugins.fireHook('filter:admin.header.build', custom_header),
configs: meta.configs.list(),
latestVersion: versions.getLatestVersion(),
privileges: privileges.admin.get(req.uid),
});
var userData = results.userData;
@@ -84,6 +85,7 @@ module.exports = function (middleware) {
version: version,
latestVersion: results.latestVersion,
upgradeAvailable: results.latestVersion && semver.gt(results.latestVersion, version),
privileges: results.privileges,
};
templateValues.template = { name: res.locals.template };

View File

@@ -1,9 +1,9 @@
'use strict';
// const _ = require('lodash');
const _ = require('lodash');
// const user = require('../user');
const user = require('../user');
const groups = require('../groups');
const helpers = require('./helpers');
const plugins = require('../plugins');
@@ -89,27 +89,17 @@ module.exports = function (privileges) {
return payload;
};
// privileges.admin.get = async function (uid) {
// const [userPrivileges, isAdministrator] = await Promise.all([
// helpers.isUserAllowedTo(privileges.admin.userPrivilegeList, uid, 0),
// user.isAdministrator(uid),
// ]);
privileges.admin.get = async function (uid) {
const [userPrivileges, isAdministrator] = await Promise.all([
helpers.isUserAllowedTo(privileges.admin.userPrivilegeList, uid, 0),
user.isAdministrator(uid),
]);
// const privData = _.zipObject(privileges.admin.userPrivilegeList, userPrivileges);
const combined = userPrivileges.map(allowed => allowed || isAdministrator);
const privData = _.zipObject(privileges.admin.userPrivilegeList, combined);
// return await plugins.fireHook('filter:privileges.admin.get', {
// chat: privData.chat || isAdministrator,
// 'upload:post:image': privData['upload:post:image'] || isAdministrator,
// 'upload:post:file': privData['upload:post:file'] || isAdministrator,
// 'search:content': privData['search:content'] || isAdministrator,
// 'search:users': privData['search:users'] || isAdministrator,
// 'search:tags': privData['search:tags'] || isAdministrator,
// 'view:users': privData['view:users'] || isAdministrator,
// 'view:tags': privData['view:tags'] || isAdministrator,
// 'view:groups': privData['view:groups'] || isAdministrator,
// 'view:users:info': privData['view:users:info'] || isAdministrator,
// });
// };
return await plugins.fireHook('filter:privileges.admin.get', privData);
};
privileges.admin.can = async function (privilege, uid) {
const isUserAllowedTo = await helpers.isUserAllowedTo(privilege, uid, [0]);

View File

@@ -45,14 +45,12 @@ module.exports = function (privileges) {
user.isModerator(uid, cid),
]);
const privData = _.zipObject(privs, userPrivileges);
const combined = userPrivileges.map(allowed => allowed || isAdministrator);
const privData = _.zipObject(privs, combined);
const isAdminOrMod = isAdministrator || isModerator;
return await plugins.fireHook('filter:privileges.categories.get', {
'topics:create': privData['topics:create'] || isAdministrator,
'topics:read': privData['topics:read'] || isAdministrator,
'topics:tag': privData['topics:tag'] || isAdministrator,
read: privData.read || isAdministrator,
...privData,
cid: cid,
uid: uid,
editable: isAdminOrMod,

View File

@@ -71,20 +71,10 @@ module.exports = function (privileges) {
user.isAdministrator(uid),
]);
const privData = _.zipObject(privileges.global.userPrivilegeList, userPrivileges);
const combined = userPrivileges.map(allowed => allowed || isAdministrator);
const privData = _.zipObject(privileges.global.userPrivilegeList, combined);
return await plugins.fireHook('filter:privileges.global.get', {
chat: privData.chat || isAdministrator,
'upload:post:image': privData['upload:post:image'] || isAdministrator,
'upload:post:file': privData['upload:post:file'] || isAdministrator,
'search:content': privData['search:content'] || isAdministrator,
'search:users': privData['search:users'] || isAdministrator,
'search:tags': privData['search:tags'] || isAdministrator,
'view:users': privData['view:users'] || isAdministrator,
'view:tags': privData['view:tags'] || isAdministrator,
'view:groups': privData['view:groups'] || isAdministrator,
'view:users:info': privData['view:users:info'] || isAdministrator,
});
return await plugins.fireHook('filter:privileges.global.get', privData);
};
privileges.global.can = async function (privilege, uid) {