mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-03 11:01:20 +01:00
refactor: privileges.global.can works with array of privileges
This commit is contained in:
@@ -14,7 +14,6 @@ const topics = require('../topics');
|
|||||||
const pagination = require('../pagination');
|
const pagination = require('../pagination');
|
||||||
const privileges = require('../privileges');
|
const privileges = require('../privileges');
|
||||||
const translator = require('../translator');
|
const translator = require('../translator');
|
||||||
const utils = require('../utils');
|
|
||||||
const helpers = require('./helpers');
|
const helpers = require('./helpers');
|
||||||
|
|
||||||
const searchController = module.exports;
|
const searchController = module.exports;
|
||||||
@@ -27,16 +26,15 @@ searchController.search = async function (req, res, next) {
|
|||||||
|
|
||||||
const searchOnly = parseInt(req.query.searchOnly, 10) === 1;
|
const searchOnly = parseInt(req.query.searchOnly, 10) === 1;
|
||||||
|
|
||||||
const userPrivileges = await utils.promiseParallel({
|
const [canSearchUsers, canSearchContent, canSearchTags] = await privileges.global.can([
|
||||||
'search:users': privileges.global.can('search:users', req.uid),
|
'search:users', 'search:content', 'search:tags',
|
||||||
'search:content': privileges.global.can('search:content', req.uid),
|
], req.uid);
|
||||||
'search:tags': privileges.global.can('search:tags', req.uid),
|
|
||||||
});
|
|
||||||
req.query.in = req.query.in || meta.config.searchDefaultIn || 'titlesposts';
|
req.query.in = req.query.in || meta.config.searchDefaultIn || 'titlesposts';
|
||||||
let allowed = (req.query.in === 'users' && userPrivileges['search:users']) ||
|
let allowed = (req.query.in === 'users' && canSearchUsers) ||
|
||||||
(req.query.in === 'tags' && userPrivileges['search:tags']) ||
|
(req.query.in === 'tags' && canSearchTags) ||
|
||||||
(req.query.in === 'categories') ||
|
(req.query.in === 'categories') ||
|
||||||
(['titles', 'titlesposts', 'posts', 'bookmarks'].includes(req.query.in) && userPrivileges['search:content']);
|
(['titles', 'titlesposts', 'posts', 'bookmarks'].includes(req.query.in) && canSearchContent);
|
||||||
({ allowed } = await plugins.hooks.fire('filter:search.isAllowed', {
|
({ allowed } = await plugins.hooks.fire('filter:search.isAllowed', {
|
||||||
uid: req.uid,
|
uid: req.uid,
|
||||||
query: req.query,
|
query: req.query,
|
||||||
@@ -139,7 +137,11 @@ searchController.search = async function (req, res, next) {
|
|||||||
searchData.tagFilterSelected = getSelectedTags(data.hasTags);
|
searchData.tagFilterSelected = getSelectedTags(data.hasTags);
|
||||||
searchData.searchDefaultSortBy = meta.config.searchDefaultSortBy || '';
|
searchData.searchDefaultSortBy = meta.config.searchDefaultSortBy || '';
|
||||||
searchData.searchDefaultIn = meta.config.searchDefaultIn || 'titlesposts';
|
searchData.searchDefaultIn = meta.config.searchDefaultIn || 'titlesposts';
|
||||||
searchData.privileges = userPrivileges;
|
searchData.privileges = {
|
||||||
|
'search:users': canSearchUsers,
|
||||||
|
'search:content': canSearchContent,
|
||||||
|
'search:tags': canSearchTags,
|
||||||
|
};
|
||||||
|
|
||||||
res.render('search', searchData);
|
res.render('search', searchData);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user