The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/packages/rocketchat-lib/server/functions/checkUsernameAvailability.js

27 lines
735 B

import s from 'underscore.string';
let usernameBlackList = [];
const toRegExp = (username) => new RegExp(`^${ s.escapeRegExp(username).trim() }$`, 'i');
RocketChat.settings.get('Accounts_BlockedUsernameList', (key, value) => {
usernameBlackList = value.split(',').map(toRegExp);
});
const usernameIsBlocked = (username, usernameBlackList) => usernameBlackList.length
&& usernameBlackList.some((restrictedUsername) => restrictedUsername.test(s.trim(s.escapeRegExp(username))));
RocketChat.checkUsernameAvailability = function(username) {
if (usernameIsBlocked(username, usernameBlackList)) {
return false;
}
return !Meteor.users.findOne({
username: {
$regex: toRegExp(username),
},
}, { fields: { _id: 1 } });
};