ServerRemotePlayer implements ServerActiveObject
[oweals/minetest.git] / src / auth.cpp
index 49985e6978950b3c87c3dc188993426794f65d73..dc740411b2051109597906195bb65ce6c789ff94 100644 (file)
@@ -40,6 +40,8 @@ std::string privsToString(u64 privs)
                os<<"privs,";
        if(privs & PRIV_SHOUT)
                os<<"shout,";
+       if(privs & PRIV_BAN)
+               os<<"ban,";
        if(os.tellp())
        {
                // Drop the trailing comma. (Why on earth can't
@@ -70,6 +72,8 @@ u64 stringToPrivs(std::string str)
                        privs |= PRIV_PRIVS;
                else if(s == "shout")
                        privs |= PRIV_SHOUT;
+               else if(s == "ban")
+                       privs |= PRIV_BAN;
                else
                        return PRIV_INVALID;
        }
@@ -77,7 +81,8 @@ u64 stringToPrivs(std::string str)
 }
 
 AuthManager::AuthManager(const std::string &authfilepath):
-               m_authfilepath(authfilepath)
+               m_authfilepath(authfilepath),
+               m_modified(false)
 {
        m_mutex.Init();
        
@@ -138,6 +143,8 @@ void AuthManager::load()
                ad.privs = privs;
                m_authdata[name] = ad;
        }
+
+       m_modified = false;
 }
 
 void AuthManager::save()
@@ -162,6 +169,8 @@ void AuthManager::save()
                AuthData ad = i.getNode()->getValue();
                os<<name<<":"<<ad.pwd<<":"<<privsToString(ad.privs)<<"\n";
        }
+
+       m_modified = false;
 }
 
 bool AuthManager::exists(const std::string &username)
@@ -180,6 +189,8 @@ void AuthManager::set(const std::string &username, AuthData ad)
        JMutexAutoLock lock(m_mutex);
        
        m_authdata[username] = ad;
+
+       m_modified = true;
 }
 
 void AuthManager::add(const std::string &username)
@@ -187,6 +198,8 @@ void AuthManager::add(const std::string &username)
        JMutexAutoLock lock(m_mutex);
        
        m_authdata[username] = AuthData();
+
+       m_modified = true;
 }
 
 std::string AuthManager::getPassword(const std::string &username)
@@ -214,6 +227,8 @@ void AuthManager::setPassword(const std::string &username,
        AuthData ad = n->getValue();
        ad.pwd = password;
        n->setValue(ad);
+
+       m_modified = true;
 }
 
 u64 AuthManager::getPrivs(const std::string &username)
@@ -240,5 +255,14 @@ void AuthManager::setPrivs(const std::string &username, u64 privs)
        AuthData ad = n->getValue();
        ad.privs = privs;
        n->setValue(ad);
+
+       m_modified = true;
 }
 
+bool AuthManager::isModified()
+{
+       JMutexAutoLock lock(m_mutex);
+       return m_modified;
+}
+
+