mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 15:45:54 +02:00
feat: renamed prefix to admin:, settigns and dashboard privs
This commit is contained in:
@@ -34,5 +34,7 @@
|
||||
"purge": "Purge",
|
||||
"moderate": "Moderate",
|
||||
|
||||
"manage-categories": "Manage Categories"
|
||||
"admin-dashboard": "Dashboard",
|
||||
"admin-categories": "Categories",
|
||||
"admin-settings": "Settings"
|
||||
}
|
||||
@@ -146,7 +146,7 @@ define('admin/manage/privileges', [
|
||||
autocomplete.user(inputEl, function (ev, ui) {
|
||||
var defaultPrivileges;
|
||||
if (ajaxify.data.url === '/admin/manage/privileges/admin') {
|
||||
defaultPrivileges = ['manage:categories'];
|
||||
defaultPrivileges = ['admin:dashboard'];
|
||||
} else {
|
||||
defaultPrivileges = cid ? ['find', 'read', 'topics:read'] : ['chat'];
|
||||
}
|
||||
@@ -180,7 +180,7 @@ define('admin/manage/privileges', [
|
||||
autocomplete.group(inputEl, function (ev, ui) {
|
||||
var defaultPrivileges;
|
||||
if (ajaxify.data.url === '/admin/manage/privileges/admin') {
|
||||
defaultPrivileges = ['groups:manage:categories'];
|
||||
defaultPrivileges = ['groups:admin:dashboard'];
|
||||
} else {
|
||||
defaultPrivileges = cid ? ['groups:find', 'groups:read', 'groups:topics:read'] : ['groups:chat'];
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ module.exports = function (middleware) {
|
||||
}
|
||||
|
||||
// Otherwise, check for privilege based on page (if not in mapping, deny access)
|
||||
const path = req.path.replace(/^(\/api)?\/admin\//g, '');
|
||||
const path = req.path.replace(/^(\/api)?\/admin\/?/g, '');
|
||||
const privilege = privileges.admin.resolve(path);
|
||||
if (!privilege || !await privileges.admin.can(privilege, req.uid)) {
|
||||
return controllers.helpers.notAllowed(req, res);
|
||||
|
||||
@@ -13,41 +13,56 @@ module.exports = function (privileges) {
|
||||
privileges.admin = {};
|
||||
|
||||
privileges.admin.privilegeLabels = [
|
||||
{ name: '[[admin/manage/privileges:manage-categories]]' },
|
||||
{ name: '[[admin/manage/privileges:admin-dashboard]]' },
|
||||
{ name: '[[admin/manage/privileges:admin-categories]]' },
|
||||
{ name: '[[admin/manage/privileges:admin-settings]]' },
|
||||
];
|
||||
|
||||
privileges.admin.userPrivilegeList = [
|
||||
'manage:categories',
|
||||
'admin:dashboard',
|
||||
'admin:categories',
|
||||
'admin:settings',
|
||||
];
|
||||
|
||||
privileges.admin.groupPrivilegeList = privileges.admin.userPrivilegeList.map(privilege => 'groups:' + privilege);
|
||||
|
||||
// Mapping for a page route (via direct match or regexp) to a privilege
|
||||
privileges.admin.routeMap = {
|
||||
'manage/categories': 'manage:categories',
|
||||
dashboard: 'admin:dashboard',
|
||||
'manage/categories': 'admin:categories',
|
||||
};
|
||||
privileges.admin.routeRegexpMap = {
|
||||
'^manage/categories/\\d+': 'manage:categories',
|
||||
'^manage/categories/\\d+': 'admin:categories',
|
||||
'^settings/[\\w\\-]+$': 'admin:settings',
|
||||
};
|
||||
|
||||
// Mapping for socket call methods to a privilege
|
||||
// In NodeBB v2, these socket calls will be removed in favour of xhr calls
|
||||
privileges.admin.socketMap = {
|
||||
'admin.categories.getAll': 'manage:categories',
|
||||
'admin.categories.create': 'manage:categories',
|
||||
'admin.categories.update': 'manage:categories',
|
||||
'admin.categories.purge': 'manage:categories',
|
||||
'admin.categories.copySettingsFrom': 'manage:categories',
|
||||
'admin.rooms.getAll': 'admin:dashboard',
|
||||
'admin.analytics.get': 'admin:dashboard',
|
||||
|
||||
'admin.categories.getAll': 'admin:categories',
|
||||
'admin.categories.create': 'admin:categories',
|
||||
'admin.categories.update': 'admin:categories',
|
||||
'admin.categories.purge': 'admin:categories',
|
||||
'admin.categories.copySettingsFrom': 'admin:categories',
|
||||
|
||||
'admin.getSearchDict': 'admin:settings',
|
||||
'admin.config.setMultiple': 'admin:settings',
|
||||
'admin.config.remove': 'admin:settings',
|
||||
};
|
||||
|
||||
privileges.admin.resolve = (path) => {
|
||||
if (privileges.admin.routeMap[path]) {
|
||||
return privileges.admin.routeMap[path];
|
||||
} else if (path === '') {
|
||||
return 'manage:dashboard';
|
||||
}
|
||||
|
||||
let privilege;
|
||||
Object.keys(privileges.admin.routeRegexpMap).forEach((regexp) => {
|
||||
if (!privilege) {
|
||||
console.log('here', new RegExp(regexp), path);
|
||||
if (new RegExp(regexp).test(path)) {
|
||||
privilege = privileges.admin.routeRegexpMap[regexp];
|
||||
}
|
||||
|
||||
@@ -61,7 +61,6 @@ Categories.setPrivilege = async function (socket, data) {
|
||||
throw new Error('[[error:no-user-or-group]]');
|
||||
}
|
||||
|
||||
console.log('setting', data);
|
||||
await privileges.categories[data.set ? 'give' : 'rescind'](
|
||||
Array.isArray(data.privilege) ? data.privilege : [data.privilege], data.cid, data.member
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user