fix username and password verification
This commit is contained in:
parent
624bbd45e3
commit
d1fa341650
@ -137,12 +137,11 @@ QStringList UserManager::users() const
|
|||||||
UserManager::UserError UserManager::createUser(const QString &username, const QString &password)
|
UserManager::UserError UserManager::createUser(const QString &username, const QString &password)
|
||||||
{
|
{
|
||||||
if (!validateUsername(username)) {
|
if (!validateUsername(username)) {
|
||||||
qCWarning(dcUserManager) << "Error creating user. Invalid username";
|
qCWarning(dcUserManager) << "Error creating user. Invalid username:" << username;
|
||||||
return UserErrorInvalidUserId;
|
return UserErrorInvalidUserId;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRegExp passwordValidator = QRegExp("^(?=.*[A-Za-z])(?=.*\[0-9])(?=.*[$@$!%*#?&])[A-Za-z0-9$@$!%*#?&]{8,}$");
|
if (!validatePassword(password)) {
|
||||||
if (!passwordValidator.exactMatch(password)) {
|
|
||||||
qCWarning(dcUserManager) << "Password failed character validation. Must contain a letter, a number and a special charactar. Minimum length: 8";
|
qCWarning(dcUserManager) << "Password failed character validation. Must contain a letter, a number and a special charactar. Minimum length: 8";
|
||||||
return UserErrorBadPassword;
|
return UserErrorBadPassword;
|
||||||
}
|
}
|
||||||
@ -407,10 +406,27 @@ void UserManager::rotate(const QString &dbName)
|
|||||||
|
|
||||||
bool UserManager::validateUsername(const QString &username) const
|
bool UserManager::validateUsername(const QString &username) const
|
||||||
{
|
{
|
||||||
QRegExp validator("(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$)");
|
QRegExp validator("(^[a-zA-Z0-9_\\.+-]+@[a-zA-Z0-9-_]+\\.[a-zA-Z]+$)");
|
||||||
return validator.exactMatch(username);
|
return validator.exactMatch(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UserManager::validatePassword(const QString &password) const
|
||||||
|
{
|
||||||
|
if (password.length() < 8) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!password.contains(QRegExp("[a-z]"))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!password.contains(QRegExp("[0-9]"))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!password.contains(QRegExp("[!\"§$%&/()#*\\'+\\.\\\\]"))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool UserManager::validateToken(const QByteArray &token) const
|
bool UserManager::validateToken(const QByteArray &token) const
|
||||||
{
|
{
|
||||||
QRegExp validator(QRegExp("(^[a-zA-Z0-9_.+-/=]+$)"));
|
QRegExp validator(QRegExp("(^[a-zA-Z0-9_.+-/=]+$)"));
|
||||||
|
|||||||
@ -71,6 +71,7 @@ private:
|
|||||||
bool initDB();
|
bool initDB();
|
||||||
void rotate(const QString &dbName);
|
void rotate(const QString &dbName);
|
||||||
bool validateUsername(const QString &username) const;
|
bool validateUsername(const QString &username) const;
|
||||||
|
bool validatePassword(const QString &password) const;
|
||||||
bool validateToken(const QByteArray &token) const;
|
bool validateToken(const QByteArray &token) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
@ -83,7 +84,7 @@ private:
|
|||||||
QPair<int, QString> m_pushButtonTransaction;
|
QPair<int, QString> m_pushButtonTransaction;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Q_DECLARE_METATYPE(nymeaserver::UserManager::UserError)
|
||||||
|
|
||||||
#endif // USERMANAGER_H
|
#endif // USERMANAGER_H
|
||||||
|
|||||||
@ -22,4 +22,5 @@ SUBDIRS = versioning \
|
|||||||
configurations \
|
configurations \
|
||||||
timemanager \
|
timemanager \
|
||||||
userloading \
|
userloading \
|
||||||
|
usermanager \
|
||||||
tags \
|
tags \
|
||||||
|
|||||||
Reference in New Issue
Block a user