Merge branch 'master' into CleanupMaxUserCheck

This commit is contained in:
ctrlaltca 2016-10-17 12:27:20 +02:00 committed by GitHub
commit 40468a79ea
5 changed files with 49 additions and 7 deletions

View file

@ -132,7 +132,12 @@ bool Servatrice_DatabaseInterface::usernameIsValid(const QString &user, QString
bool allowNumerics = settingsCache->value("users/allownumerics", true).toBool();
bool allowPunctuationPrefix = settingsCache->value("users/allowpunctuationprefix", false).toBool();
QString allowedPunctuation = settingsCache->value("users/allowedpunctuation", "_").toString();
error = QString("%1|%2|%3|%4|%5|%6|%7").arg(minNameLength).arg(maxNameLength).arg(allowLowercase).arg(allowUppercase).arg(allowNumerics).arg(allowPunctuationPrefix).arg(allowedPunctuation);
QString disallowedWordsStr = settingsCache->value("users/disallowedwords", "").toString();
QStringList disallowedWords = disallowedWordsStr.split(",", QString::SkipEmptyParts);
disallowedWords.removeDuplicates();
QString disallowedRegExpStr = settingsCache->value("users/disallowedregexp", "").toString();
error = QString("%1|%2|%3|%4|%5|%6|%7|%8|%9").arg(minNameLength).arg(maxNameLength).arg(allowLowercase).arg(allowUppercase).arg(allowNumerics).arg(allowPunctuationPrefix).arg(allowedPunctuation).arg(disallowedWordsStr).arg(disallowedRegExpStr);
if (user.length() < minNameLength || user.length() > maxNameLength)
return false;
@ -140,6 +145,14 @@ bool Servatrice_DatabaseInterface::usernameIsValid(const QString &user, QString
if (!allowPunctuationPrefix && allowedPunctuation.contains(user.at(0)))
return false;
for (const QString &word : disallowedWords) {
if (user.contains(word, Qt::CaseInsensitive)) return false;
}
for (const QRegExp &regExp : settingsCache->disallowedRegExp) {
if (regExp.exactMatch(user)) return false;
}
QString regEx("[");
if (allowLowercase)
regEx.append("a-z");

View file

@ -4,14 +4,18 @@
#include <QStandardPaths>
SettingsCache::SettingsCache(const QString & fileName, QSettings::Format format, QObject * parent)
:QSettings(fileName, format, parent)
:QSettings(fileName, format, parent)
{
QStringList disallowedRegExpStr = value("users/disallowedregexp", "").toString().split(",", QString::SkipEmptyParts);
disallowedRegExpStr.removeDuplicates();
for (const QString &regExpStr : disallowedRegExpStr) {
disallowedRegExp.append(QRegExp(regExpStr));
}
}
QString SettingsCache::guessConfigurationPath(QString & specificPath)
{
const QString fileName="servatrice.ini";
const QString fileName="servatrice.ini";
#ifdef PORTABLE_BUILD
return fileName;
#endif

View file

@ -3,6 +3,8 @@
#include <QSettings>
#include <QString>
#include <QList>
#include <QRegExp>
class SettingsCache : public QSettings {
Q_OBJECT
@ -11,6 +13,7 @@ private:
public:
SettingsCache(const QString & fileName="servatrice.ini", QSettings::Format format=QSettings::IniFormat, QObject * parent = 0);
static QString guessConfigurationPath(QString & specificPath);
QList<QRegExp> disallowedRegExp;
};
extern SettingsCache *settingsCache;