mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-01-06 10:05:33 -08:00
show ban duration in client
This commit is contained in:
@@ -297,7 +297,7 @@ QList<ServerProperties> Servatrice::getServerList() const
|
||||
return result;
|
||||
}
|
||||
|
||||
AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, QString &reasonStr)
|
||||
AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handler, const QString &user, const QString &password, QString &reasonStr, int &banSecondsLeft)
|
||||
{
|
||||
QMutexLocker locker(&dbMutex);
|
||||
const QString method = settings->value("authentication/method").toString();
|
||||
@@ -308,7 +308,7 @@ AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handl
|
||||
return UnknownUser;
|
||||
|
||||
QSqlQuery ipBanQuery;
|
||||
ipBanQuery.prepare("select time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))) < 0, b.minutes <=> 0, b.visible_reason from " + dbPrefix + "_bans b where b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.ip_address = :address) and b.ip_address = :address2");
|
||||
ipBanQuery.prepare("select time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))), b.minutes <=> 0, b.visible_reason from " + dbPrefix + "_bans b where b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.ip_address = :address) and b.ip_address = :address2");
|
||||
ipBanQuery.bindValue(":address", static_cast<ServerSocketInterface *>(handler)->getPeerAddress().toString());
|
||||
ipBanQuery.bindValue(":address2", static_cast<ServerSocketInterface *>(handler)->getPeerAddress().toString());
|
||||
if (!execSqlQuery(ipBanQuery)) {
|
||||
@@ -316,15 +316,19 @@ AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handl
|
||||
return NotLoggedIn;
|
||||
}
|
||||
|
||||
if (ipBanQuery.next())
|
||||
if (ipBanQuery.value(0).toInt() || ipBanQuery.value(1).toInt()) {
|
||||
if (ipBanQuery.next()) {
|
||||
const int secondsLeft = -ipBanQuery.value(0).toInt();
|
||||
const bool permanentBan = ipBanQuery.value(1).toInt();
|
||||
if ((secondsLeft > 0) || permanentBan) {
|
||||
reasonStr = ipBanQuery.value(2).toString();
|
||||
banSecondsLeft = permanentBan ? 0 : secondsLeft;
|
||||
qDebug("Login denied: banned by address");
|
||||
return UserIsBanned;
|
||||
}
|
||||
}
|
||||
|
||||
QSqlQuery nameBanQuery;
|
||||
nameBanQuery.prepare("select time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))) < 0, b.minutes <=> 0, b.visible_reason from " + dbPrefix + "_bans b where b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.user_name = :name2) and b.user_name = :name1");
|
||||
nameBanQuery.prepare("select time_to_sec(timediff(now(), date_add(b.time_from, interval b.minutes minute))), b.minutes <=> 0, b.visible_reason from " + dbPrefix + "_bans b where b.time_from = (select max(c.time_from) from " + dbPrefix + "_bans c where c.user_name = :name2) and b.user_name = :name1");
|
||||
nameBanQuery.bindValue(":name1", user);
|
||||
nameBanQuery.bindValue(":name2", user);
|
||||
if (!execSqlQuery(nameBanQuery)) {
|
||||
@@ -332,12 +336,16 @@ AuthenticationResult Servatrice::checkUserPassword(Server_ProtocolHandler *handl
|
||||
return NotLoggedIn;
|
||||
}
|
||||
|
||||
if (nameBanQuery.next())
|
||||
if (nameBanQuery.value(0).toInt() || nameBanQuery.value(1).toInt()) {
|
||||
if (nameBanQuery.next()) {
|
||||
const int secondsLeft = -nameBanQuery.value(0).toInt();
|
||||
const bool permanentBan = nameBanQuery.value(1).toInt();
|
||||
if ((secondsLeft > 0) || permanentBan) {
|
||||
reasonStr = nameBanQuery.value(2).toString();
|
||||
banSecondsLeft = permanentBan ? 0 : secondsLeft;
|
||||
qDebug("Login denied: banned by name");
|
||||
return UserIsBanned;
|
||||
}
|
||||
}
|
||||
|
||||
QSqlQuery passwordQuery;
|
||||
passwordQuery.prepare("select password_sha512 from " + dbPrefix + "_users where name = :name and active = 1");
|
||||
|
||||
Reference in New Issue
Block a user