aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Accounts/AccountMgr.cpp
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2013-02-18 14:49:59 +0100
committerSpp <spp@jorge.gr>2013-02-18 14:49:59 +0100
commit4fc7fcae3311c7c6f8ad18235e120ecf9ff187a0 (patch)
treebecc24509af392b8a0c47263535455262cd8709e /src/server/game/Accounts/AccountMgr.cpp
parent028c72a9f2c606e8af391d284931c60247ad0160 (diff)
Core/RBAC: Add config option to set comma separated list of groups to add by default
- Allows to reduce the rows in rbac_account_groups
Diffstat (limited to 'src/server/game/Accounts/AccountMgr.cpp')
-rw-r--r--src/server/game/Accounts/AccountMgr.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp
index 036cff1902d..bd560c8266e 100644
--- a/src/server/game/Accounts/AccountMgr.cpp
+++ b/src/server/game/Accounts/AccountMgr.cpp
@@ -56,7 +56,7 @@ AccountOpResult AccountMgr::CreateAccount(std::string username, std::string pass
RBACData* rbac = new RBACData(GetId(username), username, -1);
// No need to Load From DB, as it's new data
- RBACGroupContainer const& groupsToAdd = _defaultGroups[0]; // 0: Default sec level
+ RBACGroupContainer const& groupsToAdd = _defaultSecGroups[0]; // 0: Default sec level
for (RBACGroupContainer::const_iterator it = groupsToAdd.begin(); it != groupsToAdd.end(); ++it)
rbac->AddGroup(*it, -1);
@@ -426,13 +426,23 @@ void AccountMgr::LoadRBAC()
uint8 secId = field[0].GetUInt8();
if (lastSecId != secId)
- groups = &_defaultGroups[secId];
+ groups = &_defaultSecGroups[secId];
groups->insert(field[1].GetUInt32());
}
while (result->NextRow());
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u permission definitions, %u role definitions and %u group definitions in %u ms", count1, count2, count3, GetMSTimeDiffToNow(oldMSTime));
+
+ // Load default groups to be added to any RBAC Object.
+ std::string defaultGroups = ConfigMgr::GetStringDefault("RBAC.DefaultGroups", "");
+ Tokenizer tokens(defaultGroups, ',');
+ for (Tokenizer::const_iterator itr = tokens.begin(); itr != tokens.end(); ++itr)
+ if (uint32 groupId = atoi(*itr))
+ {
+ sLog->outError(LOG_FILTER_LFG, "Adding default group %u", groupId);
+ _defaultGroups.insert(groupId);
+ }
}
void AccountMgr::UpdateAccountAccess(RBACData* rbac, uint32 accountId, uint8 securityLevel, int32 realmId)
@@ -459,7 +469,7 @@ void AccountMgr::UpdateAccountAccess(RBACData* rbac, uint32 accountId, uint8 sec
uint8 secLevel = field[0].GetUInt8();
int32 realmId = field[1].GetUInt32();
- RBACGroupContainer const& groupsToRemove = _defaultGroups[secLevel];
+ RBACGroupContainer const& groupsToRemove = _defaultSecGroups[secLevel];
for (RBACGroupContainer::const_iterator it = groupsToRemove.begin(); it != groupsToRemove.end(); ++it)
rbac->RemoveGroup(*it, realmId);
}
@@ -467,7 +477,7 @@ void AccountMgr::UpdateAccountAccess(RBACData* rbac, uint32 accountId, uint8 sec
}
// Add new groups depending on the new security Level
- RBACGroupContainer const& groupsToAdd = _defaultGroups[securityLevel];
+ RBACGroupContainer const& groupsToAdd = _defaultSecGroups[securityLevel];
for (RBACGroupContainer::const_iterator it = groupsToAdd.begin(); it != groupsToAdd.end(); ++it)
rbac->AddGroup(*it, realmId);