mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: add visibility option to, closes #12942
This commit is contained in:
@@ -129,13 +129,26 @@ helpers.getUserDataByUserSlug = async function (userslug, callerUID, query = {})
|
||||
return hookData.userData;
|
||||
};
|
||||
|
||||
helpers.getCustomUserFields = async function (userData) {
|
||||
helpers.getCustomUserFields = async function (callerUID, 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 isSelf = String(callerUID) === String(userData.uid);
|
||||
const [isAdmin, isModOfAny] = await Promise.all([
|
||||
privileges.users.isAdministrator(callerUID),
|
||||
user.isModeratorOfAnyCategory(callerUID),
|
||||
]);
|
||||
|
||||
const fields = allFields.filter((field) => {
|
||||
const visibilityCheck = isAdmin || isModOfAny || isSelf || field.visibility === 'all' ||
|
||||
(
|
||||
field.visibility === 'loggedin' &&
|
||||
String(callerUID) !== '0' &&
|
||||
String(callerUID) !== '-1'
|
||||
);
|
||||
const minRep = field['min:rep'] || 0;
|
||||
return userData.reputation >= minRep || meta.config['reputation:disabled'];
|
||||
const repCheck = userData.reputation >= minRep || meta.config['reputation:disabled'];
|
||||
return visibilityCheck && repCheck;
|
||||
});
|
||||
|
||||
fields.forEach((f) => {
|
||||
|
||||
Reference in New Issue
Block a user