diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 15a4963962..9367ff9c53 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -189,7 +189,7 @@ User.exportUsersCSV = async function (socket, data) { }; User.saveCustomFields = async function (socket, fields) { - const userFields = user.getUserFieldWhitelist(); + const userFields = await user.getUserFieldWhitelist(); for (const field of fields) { if (userFields.includes(field.key) || userFields.includes(field.key.toLowerCase())) { throw new Error(`[[error:invalid-custom-user-field, ${field.key}]]`); diff --git a/src/user/data.js b/src/user/data.js index 06caba76b0..037b13f887 100644 --- a/src/user/data.js +++ b/src/user/data.js @@ -52,8 +52,12 @@ module.exports = function (User) { customFieldWhiteList = await db.getSortedSetRange('user-custom-fields', 0, -1); }; - User.getUserFieldWhitelist = function () { - return fieldWhitelist.slice(); + User.getUserFieldWhitelist = async function () { + const { whitelist } = await plugins.hooks.fire('filter:user.whitelistFields', { + uids: [], + whitelist: fieldWhitelist.slice(), + }); + return whitelist; }; User.getUsersFields = async function (uids, fields) {