1
0

Moved common cGroupManager code to a separate function.

This fixes my concerns in PR #709.
This commit is contained in:
madmaxoft 2014-02-28 15:31:20 +01:00
parent 6ad4b78a7b
commit 35def963f0
3 changed files with 30 additions and 12 deletions

View File

@ -1529,14 +1529,14 @@ void cPlayer::LoadPermissionsFromDisk()
std::string Groups = IniFile.GetValue(m_PlayerName, "Groups", ""); std::string Groups = IniFile.GetValue(m_PlayerName, "Groups", "");
if (!Groups.empty()) if (!Groups.empty())
{ {
AStringVector Split = StringSplit( Groups, "," ); AStringVector Split = StringSplitAndTrim(Groups, ",");
for( unsigned int i = 0; i < Split.size(); i++ ) for (AStringVector::const_iterator itr = Split.begin(), end = Split.end(); itr != end; ++itr)
{ {
if (!cRoot::Get()->GetGroupManager()->ExistsGroup(Split[i])) if (!cRoot::Get()->GetGroupManager()->ExistsGroup(*itr))
{ {
LOGWARNING("The group %s for player %s was not found!", Split[i].c_str(), m_PlayerName.c_str()); LOGWARNING("The group %s for player %s was not found!", itr->c_str(), m_PlayerName.c_str());
} }
AddToGroup(Split[i].c_str()); AddToGroup(*itr);
} }
} }
else else
@ -1544,11 +1544,15 @@ void cPlayer::LoadPermissionsFromDisk()
AddToGroup("Default"); AddToGroup("Default");
} }
m_Color = IniFile.GetValue(m_PlayerName, "Color", "-")[0]; AString Color = IniFile.GetValue(m_PlayerName, "Color", "-");
if (!Color.empty())
{
m_Color = Color[0];
}
} }
else else
{ {
cRoot::Get()->GetGroupManager()->CheckUsers(); cGroupManager::GenerateDefaultUsersIni(IniFile);
AddToGroup("Default"); AddToGroup("Default");
} }
ResolvePermissions(); ResolvePermissions();

View File

@ -55,16 +55,27 @@ cGroupManager::cGroupManager()
void cGroupManager::GenerateDefaultUsersIni(cIniFile & a_IniFile)
{
LOGWARN("Regenerating users.ini, all users will be reset");
a_IniFile.AddHeaderComment(" This file stores the players' groups.");
a_IniFile.AddHeaderComment(" The format is:");
a_IniFile.AddHeaderComment(" [PlayerName]");
a_IniFile.AddHeaderComment(" Groups = GroupName1, GroupName2, ...");
a_IniFile.WriteFile("users.ini");
}
void cGroupManager::CheckUsers(void) void cGroupManager::CheckUsers(void)
{ {
cIniFile IniFile; cIniFile IniFile;
if (!IniFile.ReadFile("users.ini")) if (!IniFile.ReadFile("users.ini"))
{ {
LOGWARN("Regenerating users.ini, all users will be reset"); GenerateDefaultUsersIni(IniFile);
IniFile.AddHeaderComment(" This is the file in which the group the player belongs to is stored");
IniFile.AddHeaderComment(" The format is: [PlayerName] | Groups=GroupName");
IniFile.WriteFile("users.ini");
return; return;
} }

View File

@ -19,6 +19,9 @@ public:
void LoadGroups(void); void LoadGroups(void);
void CheckUsers(void); void CheckUsers(void);
/** Writes the default header to the specified ini file, and saves it as "users.ini". */
static void GenerateDefaultUsersIni(cIniFile & a_IniFile);
private: private:
friend class cRoot; friend class cRoot;
cGroupManager(); cGroupManager();