1
0

cPlayer now checks restrictions.

Fixes #1331.
This commit is contained in:
Mattes D
2015-04-25 19:40:44 +02:00
parent 9c5797f27d
commit b5998873e4
3 changed files with 69 additions and 8 deletions

View File

@@ -1414,14 +1414,23 @@ bool cPlayer::HasPermission(const AString & a_Permission)
AStringVector Split = StringSplit(a_Permission, ".");
// Iterate over all granted permissions; if any matches, then return success:
for (AStringVectorVector::const_iterator itr = m_SplitPermissions.begin(), end = m_SplitPermissions.end(); itr != end; ++itr)
// Iterate over all restrictions; if any matches, then return failure:
for (auto & Restriction: m_SplitRestrictions)
{
if (PermissionMatches(Split, *itr))
if (PermissionMatches(Split, Restriction))
{
return false;
}
} // for Restriction - m_SplitRestrictions[]
// Iterate over all granted permissions; if any matches, then return success:
for (auto & Permission: m_SplitPermissions)
{
if (PermissionMatches(Split, Permission))
{
return true;
}
} // for itr - m_SplitPermissions[]
} // for Permission - m_SplitPermissions[]
// No granted permission matches
return false;
@@ -2169,15 +2178,24 @@ void cPlayer::LoadRank(void)
RankMgr->UpdatePlayerName(m_UUID, m_PlayerName);
}
m_Permissions = RankMgr->GetPlayerPermissions(m_UUID);
m_Restrictions = RankMgr->GetPlayerRestrictions(m_UUID);
RankMgr->GetRankVisuals(m_Rank, m_MsgPrefix, m_MsgSuffix, m_MsgNameColorCode);
// Break up the individual permissions on each dot, into m_SplitPermissions:
m_SplitPermissions.clear();
m_SplitPermissions.reserve(m_Permissions.size());
for (AStringVector::const_iterator itr = m_Permissions.begin(), end = m_Permissions.end(); itr != end; ++itr)
for (auto & Permission: m_Permissions)
{
m_SplitPermissions.push_back(StringSplit(*itr, "."));
} // for itr - m_Permissions[]
m_SplitPermissions.push_back(StringSplit(Permission, "."));
} // for Permission - m_Permissions[]
// Break up the individual restrictions on each dot, into m_SplitRestrictions:
m_SplitRestrictions.clear();
m_SplitRestrictions.reserve(m_Restrictions.size());
for (auto & Restriction: m_Restrictions)
{
m_SplitRestrictions.push_back(StringSplit(Restriction, "."));
} // for itr - m_Restrictions[]
}