mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-08-29 06:25:16 +02:00
Merge branch 'develop' into activitypub
This commit is contained in:
@@ -7,6 +7,7 @@ const groups = require('../../groups');
|
||||
const privileges = require('../../privileges');
|
||||
const plugins = require('../../plugins');
|
||||
const file = require('../../file');
|
||||
const accountHelpers = require('./helpers');
|
||||
|
||||
const editController = module.exports;
|
||||
|
||||
@@ -25,11 +26,13 @@ editController.get = async function (req, res, next) {
|
||||
allowMultipleBadges,
|
||||
} = userData;
|
||||
|
||||
const [canUseSignature, canManageUsers] = await Promise.all([
|
||||
const [canUseSignature, canManageUsers, customUserFields] = await Promise.all([
|
||||
privileges.global.can('signature', req.uid),
|
||||
privileges.admin.can('admin:users', req.uid),
|
||||
accountHelpers.getCustomUserFields(userData),
|
||||
]);
|
||||
|
||||
userData.customUserFields = customUserFields;
|
||||
userData.maximumSignatureLength = meta.config.maximumSignatureLength;
|
||||
userData.maximumAboutMeLength = meta.config.maximumAboutMeLength;
|
||||
userData.maximumProfileImageSize = meta.config.maximumProfileImageSize;
|
||||
|
||||
@@ -143,6 +143,29 @@ helpers.getUserDataByUserSlug = async function (userslug, callerUID, query = {})
|
||||
return hookData.userData;
|
||||
};
|
||||
|
||||
helpers.getCustomUserFields = async function (userData) {
|
||||
const keys = await db.getSortedSetRange('user-custom-fields', 0, -1);
|
||||
const allFields = (await db.getObjects(keys.map(k => `user-custom-field:${k}`))).filter(Boolean);
|
||||
|
||||
const fields = allFields.filter((field) => {
|
||||
const minRep = field['min:rep'] || 0;
|
||||
return userData.reputation >= minRep || meta.config['reputation:disabled'];
|
||||
});
|
||||
|
||||
fields.forEach((f) => {
|
||||
f['select-options'] = f['select-options'].split('\n').filter(Boolean).map(
|
||||
opt => ({
|
||||
value: opt,
|
||||
selected: opt === userData[f.key],
|
||||
})
|
||||
);
|
||||
if (userData[f.key]) {
|
||||
f.value = validator.escape(String(userData[f.key]));
|
||||
}
|
||||
});
|
||||
return fields;
|
||||
};
|
||||
|
||||
function escape(value) {
|
||||
return translator.escape(validator.escape(String(value || '')));
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ const categories = require('../../categories');
|
||||
const plugins = require('../../plugins');
|
||||
const privileges = require('../../privileges');
|
||||
const helpers = require('../helpers');
|
||||
const accountHelpers = require('./helpers');
|
||||
const utils = require('../../utils');
|
||||
|
||||
const profileController = module.exports;
|
||||
@@ -23,12 +24,13 @@ profileController.get = async function (req, res, next) {
|
||||
|
||||
await incrementProfileViews(req, userData);
|
||||
|
||||
const [latestPosts, bestPosts] = await Promise.all([
|
||||
const [latestPosts, bestPosts, customUserFields] = await Promise.all([
|
||||
getLatestPosts(req.uid, userData),
|
||||
getBestPosts(req.uid, userData),
|
||||
accountHelpers.getCustomUserFields(userData),
|
||||
posts.parseSignature(userData, req.uid),
|
||||
]);
|
||||
|
||||
userData.customUserFields = customUserFields;
|
||||
userData.posts = latestPosts; // for backwards compat.
|
||||
userData.latestPosts = latestPosts;
|
||||
userData.bestPosts = bestPosts;
|
||||
|
||||
@@ -294,3 +294,15 @@ usersController.getCSV = async function (req, res, next) {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
usersController.customFields = async function (req, res) {
|
||||
const keys = await db.getSortedSetRange('user-custom-fields', 0, -1);
|
||||
const fields = (await db.getObjects(keys.map(k => `user-custom-field:${k}`))).filter(Boolean);
|
||||
fields.forEach((field) => {
|
||||
if (field['select-options']) {
|
||||
field.selectOptionsFormatted = field['select-options'].trim().split('\n').join(', ');
|
||||
}
|
||||
field['min:rep'] = field['min:rep'] || 0;
|
||||
});
|
||||
res.render('admin/manage/users/custom-fields', { fields: fields });
|
||||
};
|
||||
|
||||
@@ -78,6 +78,7 @@ apiController.loadConfig = async function (req) {
|
||||
enablePostHistory: meta.config.enablePostHistory === 1,
|
||||
timeagoCutoff: meta.config.timeagoCutoff !== '' ? Math.max(0, parseInt(meta.config.timeagoCutoff, 10)) : meta.config.timeagoCutoff,
|
||||
timeagoCodes: languages.timeagoCodes,
|
||||
resizeImageWidth: meta.config.resizeImageWidth,
|
||||
cookies: {
|
||||
enabled: meta.config.cookieConsentEnabled === 1,
|
||||
message: translator.escape(validator.escape(meta.config.cookieConsentMessage || '[[global:cookies.message]]')).replace(/\\/g, '\\\\'),
|
||||
|
||||
Reference in New Issue
Block a user