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();