From 5957fed9a7df9297dd218b6400d612434e87ac5a Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Thu, 15 Mar 2012 15:27:16 +0200 Subject: Fix and improve Server's privilege get/setters --- src/server.cpp | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'src/server.cpp') diff --git a/src/server.cpp b/src/server.cpp index a74a2ee75..2139df957 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -4182,6 +4182,40 @@ std::wstring Server::getStatusString() return os.str(); } +u64 Server::getPlayerAuthPrivs(const std::string &name) +{ + try{ + return m_authmanager.getPrivs(name); + } + catch(AuthNotFoundException &e) + { + dstream<<"WARNING: Auth not found for "<get("name")) + return PRIV_ALL; + return getPlayerAuthPrivs(name); +} + void Server::setPlayerPassword(const std::string &name, const std::wstring &password) { // Add player to auth manager @@ -4570,16 +4604,7 @@ u64 Server::getPlayerPrivs(Player *player) if(player==NULL) return 0; std::string playername = player->getName(); - // Local player gets all privileges regardless of - // what's set on their account. - if(g_settings->get("name") == playername) - { - return PRIV_ALL; - } - else - { - return getPlayerAuthPrivs(playername); - } + return getPlayerEffectivePrivs(playername); } void dedicated_server_loop(Server &server, bool &kill) -- cgit v1.2.3