mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-26 08:31:22 +01:00
refactor: privileges.x.get() to not used hardcoded privs
This commit is contained in:
@@ -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 };
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user