mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 03:27:01 +02:00
Merge commit '67efaeb4b8e03417dfc3b575f19249f18f4cb3d6' into v2.x
This commit is contained in:
20
CHANGELOG.md
20
CHANGELOG.md
@@ -1,3 +1,23 @@
|
||||
#### v2.5.5 (2022-10-11)
|
||||
|
||||
##### Chores
|
||||
|
||||
* up plugins (b91ef6dd)
|
||||
* incrementing version number - v2.5.4 (e83260ca)
|
||||
* update changelog for v2.5.4 (aabf073c)
|
||||
* incrementing version number - v2.5.3 (7e922936)
|
||||
* incrementing version number - v2.5.2 (babcd17e)
|
||||
* incrementing version number - v2.5.1 (ce3aa950)
|
||||
* incrementing version number - v2.5.0 (01d276cb)
|
||||
* incrementing version number - v2.4.5 (dd3e1a28)
|
||||
* incrementing version number - v2.4.4 (d5525c87)
|
||||
* incrementing version number - v2.4.3 (9c647c6c)
|
||||
* incrementing version number - v2.4.2 (3aa7b855)
|
||||
* incrementing version number - v2.4.1 (60cbd148)
|
||||
* incrementing version number - v2.4.0 (4834cde3)
|
||||
* incrementing version number - v2.3.1 (d2425942)
|
||||
* incrementing version number - v2.3.0 (046ea120)
|
||||
|
||||
#### v2.5.4 (2022-10-11)
|
||||
|
||||
##### Chores
|
||||
|
||||
@@ -215,14 +215,14 @@ async function isOwner(caller, groupName) {
|
||||
if (typeof groupName !== 'string') {
|
||||
throw new Error('[[error:invalid-group-name]]');
|
||||
}
|
||||
const [isAdmin, isGlobalModerator, isOwner, group] = await Promise.all([
|
||||
user.isAdministrator(caller.uid),
|
||||
const [hasAdminPrivilege, isGlobalModerator, isOwner, group] = await Promise.all([
|
||||
privileges.admin.can('admin:groups', caller.uid),
|
||||
user.isGlobalModerator(caller.uid),
|
||||
groups.ownership.isOwner(caller.uid, groupName),
|
||||
groups.getGroupData(groupName),
|
||||
]);
|
||||
|
||||
const check = isOwner || isAdmin || (isGlobalModerator && !group.system);
|
||||
const check = isOwner || hasAdminPrivilege || (isGlobalModerator && !group.system);
|
||||
if (!check) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
|
||||
@@ -342,6 +342,14 @@ async function createAdmin() {
|
||||
try {
|
||||
User.isPasswordValid(results.password);
|
||||
} catch (err) {
|
||||
const [namespace, key] = err.message.slice(2, -2).split(':', 2);
|
||||
if (namespace && key && err.message.startsWith('[[') && err.message.endsWith(']]')) {
|
||||
const lang = require(path.join(__dirname, `../public/language/en-GB/${namespace}`));
|
||||
if (lang && lang[key]) {
|
||||
err.message = lang[key];
|
||||
}
|
||||
}
|
||||
|
||||
winston.warn(`Password error, please try again. ${err.message}`);
|
||||
return await retryPassword(results);
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ exports.webpack = async function (options) {
|
||||
const util = require('util');
|
||||
const plugins = require('../plugins/data');
|
||||
|
||||
const activePlugins = await plugins.getActive();
|
||||
const activePlugins = (await plugins.getActive()).map(p => p.id);
|
||||
if (!activePlugins.includes('nodebb-plugin-composer-default')) {
|
||||
activePlugins.push('nodebb-plugin-composer-default');
|
||||
}
|
||||
|
||||
@@ -42,13 +42,15 @@ async function isOwner(socket, data) {
|
||||
throw new Error('[[error:invalid-group-name]]');
|
||||
}
|
||||
const results = await utils.promiseParallel({
|
||||
isAdmin: await user.isAdministrator(socket.uid),
|
||||
isGlobalModerator: await user.isGlobalModerator(socket.uid),
|
||||
isOwner: await groups.ownership.isOwner(socket.uid, data.groupName),
|
||||
group: await groups.getGroupData(data.groupName),
|
||||
hasAdminPrivilege: privileges.admin.can('admin:groups', socket.uid),
|
||||
isGlobalModerator: user.isGlobalModerator(socket.uid),
|
||||
isOwner: groups.ownership.isOwner(socket.uid, data.groupName),
|
||||
group: groups.getGroupData(data.groupName),
|
||||
});
|
||||
|
||||
const isOwner = results.isOwner || results.isAdmin || (results.isGlobalModerator && !results.group.system);
|
||||
const isOwner = results.isOwner ||
|
||||
results.hasAdminPrivilege ||
|
||||
(results.isGlobalModerator && !results.group.system);
|
||||
if (!isOwner) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
@@ -220,15 +222,15 @@ SocketGroups.loadMoreMembers = async (socket, data) => {
|
||||
};
|
||||
|
||||
async function canSearchMembers(uid, groupName) {
|
||||
const [isHidden, isMember, isAdmin, isGlobalMod, viewGroups] = await Promise.all([
|
||||
const [isHidden, isMember, hasAdminPrivilege, isGlobalMod, viewGroups] = await Promise.all([
|
||||
groups.isHidden(groupName),
|
||||
groups.isMember(uid, groupName),
|
||||
user.isAdministrator(uid),
|
||||
privileges.admin.can('admin:groups', uid),
|
||||
user.isGlobalModerator(uid),
|
||||
privileges.global.can('view:groups', uid),
|
||||
]);
|
||||
|
||||
if (!viewGroups || (isHidden && !isMember && !isAdmin && !isGlobalMod)) {
|
||||
if (!viewGroups || (isHidden && !isMember && !hasAdminPrivilege && !isGlobalMod)) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
}
|
||||
@@ -268,11 +270,11 @@ async function canModifyGroup(uid, groupName) {
|
||||
const results = await utils.promiseParallel({
|
||||
isOwner: groups.ownership.isOwner(uid, groupName),
|
||||
system: groups.getGroupField(groupName, 'system'),
|
||||
isAdmin: user.isAdministrator(uid),
|
||||
hasAdminPrivilege: privileges.admin.can('admin:groups', uid),
|
||||
isGlobalMod: user.isGlobalModerator(uid),
|
||||
});
|
||||
|
||||
if (!(results.isOwner || results.isAdmin || (results.isGlobalMod && !results.system))) {
|
||||
if (!(results.isOwner || results.hasAdminPrivilege || (results.isGlobalMod && !results.system))) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user