You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.3 KiB
JavaScript

'use strict';
const categories = require('../../categories');
const privileges = require('../../privileges');
const privilegesController = module.exports;
privilegesController.get = async function (req, res) {
const cid = req.params.cid ? parseInt(req.params.cid, 10) || 0 : 0;
const isAdminPriv = req.params.cid === 'admin';
let method;
if (cid > 0) {
method = privileges.categories.list.bind(null, cid);
} else if (cid === 0) {
method = isAdminPriv ? privileges.admin.list : privileges.global.list;
}
const [privilegesData, categoriesData] = await Promise.all([
method(isAdminPriv ? req.uid : undefined),
categories.buildForSelectAll(),
]);
categoriesData.unshift({
cid: 0,
name: '[[admin/manage/privileges:global]]',
icon: 'fa-list',
}, {
cid: 'admin', // what do?
name: '[[admin/manage/privileges:admin]]',
icon: 'fa-lock',
});
let selectedCategory;
categoriesData.forEach(function (category) {
if (category) {
category.selected = category.cid === (!isAdminPriv ? cid : 'admin');
if (category.selected) {
selectedCategory = category;
}
}
});
const group = req.query.group ? req.query.group : '';
res.render('admin/manage/privileges', {
privileges: privilegesData,
categories: categoriesData,
selectedCategory: selectedCategory,
cid: cid,
group: group,
});
};