add a way to replace the user facing list of disallowed words (#4807)

This commit is contained in:
ebbit1q 2023-08-06 23:45:37 +02:00 committed by GitHub
parent 5b694a55d2
commit afb7c35cfd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 4 deletions

View file

@ -476,9 +476,22 @@ QString MainWindow::extractInvalidUsernameMessage(QString &in)
"</li>"; "</li>";
if (rules.size() == 9) { if (rules.size() == 9) {
if (rules.at(7).size() > 0) if (rules.at(7).size() > 0) {
out += "<li>" + tr("can not contain any of the following words: %1").arg(rules.at(7).toHtmlEscaped()) + QString words = rules.at(7).toHtmlEscaped();
"</li>"; if (words.startsWith("\n")) {
out += tr("no unacceptable language as specified by these server rules:",
"note that the following lines will not be translated");
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
for (QString &line : words.split("\n", Qt::SkipEmptyParts)) {
#else
for (QString &line : words.split("\n", QString::SkipEmptyParts)) {
#endif
out += "<li>" + line + "</li>";
}
} else {
out += "<li>" + tr("can not contain any of the following words: %1").arg(words) + "</li>";
}
}
if (rules.at(8).size() > 0) if (rules.at(8).size() > 0)
out += "<li>" + out += "<li>" +

View file

@ -127,6 +127,16 @@ allowpunctuationprefix=false
; "admin,user,name" ; "admin,user,name"
disallowedwords="admin" disallowedwords="admin"
; Overwrite the words shown to the user when they enter a wrong username,
; use \n to start a new line. Neither the real wordlist nor the disallowed
; expressions will be sent to the user if this is set.
; In the old versions of the client this list will be prefaced with
; "can not contain any of the following words:"
; example:
;displaydisallowedwords="no attempts at impersonating staff\nno unparliamentary language\nno references to controversial figures\nstaff reserves the right to remove accounts deemed inappropriate"
; Setting it to nothing will simply hide the list:
;displaydisallowedwords=
; Disallow usernames matching these regular expressions. This list is comma ; Disallow usernames matching these regular expressions. This list is comma
; separated, e.g. "\\w+\\d+,\\d{2}user", hence you cannot use commas in your ; separated, e.g. "\\w+\\d+,\\d{2}user", hence you cannot use commas in your
; expressions. Backslashes must be escaped, so `\w+\d+` becomes `\\w+\\d+`. ; expressions. Backslashes must be escaped, so `\w+\d+` becomes `\\w+\\d+`.

View file

@ -153,7 +153,16 @@ bool Servatrice_DatabaseInterface::usernameIsValid(const QString &user, QString
QStringList disallowedWords = disallowedWordsStr.split(",", QString::SkipEmptyParts); QStringList disallowedWords = disallowedWordsStr.split(",", QString::SkipEmptyParts);
#endif #endif
disallowedWords.removeDuplicates(); disallowedWords.removeDuplicates();
QString disallowedRegExpStr = settingsCache->value("users/disallowedregexp", "").toString(); QVariant displayDisallowedWords = settingsCache->value("users/displaydisallowedwords");
QString disallowedRegExpStr;
if (displayDisallowedWords.isValid()) {
disallowedWordsStr = displayDisallowedWords.toString().trimmed();
if (!disallowedWordsStr.isEmpty()) {
disallowedWordsStr.prepend("\n");
}
} else {
disallowedRegExpStr = settingsCache->value("users/disallowedregexp", "").toString();
}
error = QString("%1|%2|%3|%4|%5|%6|%7|%8|%9") error = QString("%1|%2|%3|%4|%5|%6|%7|%8|%9")
.arg(minNameLength) .arg(minNameLength)