Moved common cGroupManager code to a separate function.
This fixes my concerns in PR #709.
This commit is contained in:
parent
6ad4b78a7b
commit
35def963f0
@ -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();
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user