Core/Accounts: prevent existing account ban from being updated

Signed-off-by: jackpoz <giacomopoz@gmail.com>
This commit is contained in:
Gogs authored and Aokromes committed 2017-12-17 19:13:11 +01:00
1 parent e8bdb4a59d
commit 6c917cd403
7 files changed
+26 -2

No files matched your search

@@ -0,0 +1,2 @@
DELETE FROM `trinity_string` WHERE `entry`=1188;
INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES (1188, 'Ban exists');
+12
View File
@@ -384,6 +384,18 @@ std::string AccountMgr::CalculateShaPassHash(std::string const& name, std::strin
return ByteArrayToHexStr(sha.GetDigest(), sha.GetLength());
}
bool AccountMgr::IsBannedAccount(std::string const& name)
{
PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME);
stmt->setString(0, name);
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
return false;
return true;
}
bool AccountMgr::IsPlayerAccount(uint32 gmlevel)
{
return gmlevel == SEC_PLAYER;
+1
View File
@@ -75,6 +75,7 @@ class TC_GAME_API AccountMgr
static uint32 GetCharactersCount(uint32 accountId);
static std::string CalculateShaPassHash(std::string const& name, std::string const& password);
static bool IsBannedAccount(std::string const& name);
static bool IsPlayerAccount(uint32 gmlevel);
static bool IsAdminAccount(uint32 gmlevel);
static bool IsConsoleAccount(uint32 gmlevel);
+2 -1
View File
@@ -999,7 +999,8 @@ enum TrinityStrings
LANG_GROUP_NOT_IN_RAID_GROUP = 1185,
LANG_GROUP_ROLE_CHANGED = 1186,
LANG_LEADER_CANNOT_BE_ASSISTANT = 1187,
// Room for more level 3 1188-1198 not used
LANG_BAN_EXISTS = 1188,
// Room for more level 3 1189-1198 not used
// Debug commands
LANG_GUILD_INFO_LEVEL = 1999, // LANG_DO_NOT_USE_6X_DEBUG_AREATRIGGER_LEFT -- unused on 3.3.5a
@@ -3846,7 +3846,8 @@ enum BanReturn
{
BAN_SUCCESS,
BAN_SYNTAX_ERROR,
BAN_NOTFOUND
BAN_NOTFOUND,
BAN_EXISTS
};
enum BattlegroundTeamId
+4
View File
@@ -2588,6 +2588,10 @@ BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, uint32 du
PreparedQueryResult resultAccounts = PreparedQueryResult(NULL); //used for kicking
PreparedStatement* stmt = NULL;
// Prevent banning an already banned account
if (mode == BAN_ACCOUNT && AccountMgr::IsBannedAccount(nameOrIP))
return BAN_EXISTS;
///- Update the database with ban information
switch (mode)
{
+3
View File
@@ -230,6 +230,9 @@ public:
}
handler->SetSentErrorMessage(true);
return false;
case BAN_EXISTS:
handler->PSendSysMessage(LANG_BAN_EXISTS);
break;
}
return true;