From 49b4a4f24b115f33721ae26a3856f5e9a1f80aa9 Mon Sep 17 00:00:00 2001 From: seefo Date: Sun, 15 Apr 2018 11:10:31 -0400 Subject: [PATCH] Removed admin table dependence on station ids --- .../serverGame/src/shared/core/Client.cpp | 2 +- .../src/shared/AdminAccountManager.cpp | 25 +++++++------------ .../src/shared/AdminAccountManager.h | 2 +- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/engine/server/library/serverGame/src/shared/core/Client.cpp b/engine/server/library/serverGame/src/shared/core/Client.cpp index 51ff8010..cae9c03a 100755 --- a/engine/server/library/serverGame/src/shared/core/Client.cpp +++ b/engine/server/library/serverGame/src/shared/core/Client.cpp @@ -1924,7 +1924,7 @@ float Client::computeDeltaTimeInSeconds(uint32 const syncStampLong) const { bool Client::setGodMode(bool value) { // (re?) check god permissions - m_godLevel = AdminAccountManager::isAdminAccount(getStationId(), ConfigServerGame::getUseOldSuidGenerator()); + m_godLevel = AdminAccountManager::getAdminLevel(m_accountName.c_str()); if (ConfigServerGame::getAdminGodToAll() || (m_godLevel > 0)) { m_godValidated = true; diff --git a/engine/server/library/serverUtility/src/shared/AdminAccountManager.cpp b/engine/server/library/serverUtility/src/shared/AdminAccountManager.cpp index c80ccd99..6d30f4f5 100755 --- a/engine/server/library/serverUtility/src/shared/AdminAccountManager.cpp +++ b/engine/server/library/serverUtility/src/shared/AdminAccountManager.cpp @@ -64,25 +64,18 @@ const std::string & AdminAccountManager::getAdminTagName() //----------------------------------------------------------------------- -// if they are in the iff and have a level set, return it -int AdminAccountManager::isAdminAccount(uint32 suid, bool useOldSuid) +int AdminAccountManager::getAdminLevel(const std::string & account) { - DEBUG_FATAL(!ms_installed, ("AdminAccountManager not installed")); + int level = 0; + DEBUG_FATAL(!ms_installed, ("AdminAccountManager not installed")); - int columnNumber = -1; + int columnNumber = ms_adminTable->findColumnNumber("AdminAccounts"); + DEBUG_FATAL(columnNumber == -1, ("Error loading admin table...no account column")); + int row = ms_adminTable->searchColumnString( columnNumber, account); + if (row == -1) return 0; - if (!useOldSuid) { - columnNumber = ms_adminTable->findColumnNumber("AdminSuid"); - } else { - columnNumber = ms_adminTable->findColumnNumber("OldAdminSuid"); - } - - DEBUG_FATAL(columnNumber == -1, ("Error loading admin table...no account column")); - int row = ms_adminTable->searchColumnInt(columnNumber, suid); - if (row == -1) - return false; - - return (int) ms_adminTable->getIntValue("AdminLevel", row); + level = ms_adminTable->getIntValue("AdminLevel", row); + return level; } bool AdminAccountManager::isAdminAccount(const std::string & account, int& level) diff --git a/engine/server/library/serverUtility/src/shared/AdminAccountManager.h b/engine/server/library/serverUtility/src/shared/AdminAccountManager.h index 40ebd363..aed450db 100755 --- a/engine/server/library/serverUtility/src/shared/AdminAccountManager.h +++ b/engine/server/library/serverUtility/src/shared/AdminAccountManager.h @@ -19,7 +19,7 @@ public: static const char *getAdminCommandName(); static const std::string & getAdminTagName(); - static int isAdminAccount(uint32 suid, bool useOldSuid = false); + static int getAdminLevel(const std::string & account); static bool isAdminAccount(const std::string & account, int& level); static bool isInternalIp(const std::string & addr); static void reload();