aboutsummaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-15 15:27:16 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-03-15 15:38:59 +0200
commit5957fed9a7df9297dd218b6400d612434e87ac5a (patch)
treea4af7d28234fa59b4b54a8658e6c75544bf3dd2c /src/server.cpp
parent6298878bfa996754fad0e530a209411f72cfdfac (diff)
downloadhax-minetest-server-5957fed9a7df9297dd218b6400d612434e87ac5a.tar.gz
hax-minetest-server-5957fed9a7df9297dd218b6400d612434e87ac5a.zip
Fix and improve Server's privilege get/setters
Diffstat (limited to 'src/server.cpp')
-rw-r--r--src/server.cpp45
1 files changed, 35 insertions, 10 deletions
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 "<<name<<std::endl;
+ return 0;
+ }
+}
+
+void Server::setPlayerAuthPrivs(const std::string &name, u64 privs)
+{
+ try{
+ return m_authmanager.setPrivs(name, privs);
+ }
+ catch(AuthNotFoundException &e)
+ {
+ dstream<<"WARNING: Auth not found for "<<name<<std::endl;
+ }
+}
+
+u64 Server::getPlayerEffectivePrivs(const std::string &name)
+{
+ // Local player gets all privileges regardless of
+ // what's set on their account.
+ if(m_simple_singleplayer_mode)
+ return PRIV_ALL;
+ if(name == g_settings->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)