21 RBACPermissionContainer::const_iterator itr = perms.begin();
23 for (++itr; itr != perms.end(); ++itr)
45 SF_LOG_TRACE(
"rbac",
"RBACData::GrantPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission does not exists",
53 SF_LOG_TRACE(
"rbac",
"RBACData::GrantPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission in deny list",
61 SF_LOG_TRACE(
"rbac",
"RBACData::GrantPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission already granted",
71 SF_LOG_TRACE(
"rbac",
"RBACData::GrantPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok and DB updated",
77 SF_LOG_TRACE(
"rbac",
"RBACData::GrantPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok",
89 SF_LOG_TRACE(
"rbac",
"RBACData::DenyPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission does not exists",
97 SF_LOG_TRACE(
"rbac",
"RBACData::DenyPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission in grant list",
105 SF_LOG_TRACE(
"rbac",
"RBACData::DenyPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Permission already denied",
115 SF_LOG_TRACE(
"rbac",
"RBACData::DenyPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok and DB updated",
121 SF_LOG_TRACE(
"rbac",
"RBACData::DenyPermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok",
142 SF_LOG_TRACE(
"rbac",
"RBACData::RevokePermission [Id: %u Name: %s] (Permission %u, RealmId %d). Not granted or revoked",
153 SF_LOG_TRACE(
"rbac",
"RBACData::RevokePermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok and DB updated",
164 SF_LOG_TRACE(
"rbac",
"RBACData::RevokePermission [Id: %u Name: %s] (Permission %u, RealmId %d). Ok",
185 Field* fields = result->Fetch();
186 if (fields[1].GetBool())
190 }
while (result->NextRow());
195 for (RBACPermissionContainer::const_iterator itr = permissions.begin(); itr != permissions.end(); ++itr)
216 for (RBACPermissionContainer::const_iterator itr = permsFrom.begin(); itr != permsFrom.end(); ++itr)
217 permsTo.insert(*itr);
222 for (RBACPermissionContainer::const_iterator itr = permsFrom.begin(); itr != permsFrom.end(); ++itr)
231 while (!toCheck.empty())
234 uint32 permissionId = *toCheck.begin();
235 toCheck.erase(toCheck.begin());
242 permissions.insert(permissionId);
246 for (RBACPermissionContainer::const_iterator itr = linkedPerms.begin(); itr != linkedPerms.end(); ++itr)
247 if (permissions.find(*itr) == permissions.end())
248 toCheck.insert(*itr);
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_TRACE(filterType__,...)
@ LOGIN_DEL_RBAC_ACCOUNT_PERMISSION
@ LOGIN_SEL_RBAC_ACCOUNT_PERMISSIONS
@ LOGIN_INS_RBAC_ACCOUNT_PERMISSION
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Role Based Access Control related classes definition.
void setBool(const uint8 index, const bool value)
void setUInt32(const uint8 index, const uint32 value)
void setInt32(const uint8 index, const int32 value)
RBACPermissionContainer const & GetDeniedPermissions() const
Returns all the denied permissions.
RBACCommandResult GrantPermission(uint32 permissionId, int32 realmId=0)
void AddDeniedPermission(uint32 permissionId)
Adds a new denied permission.
RBACPermissionContainer _grantedPerms
void AddGrantedPermission(uint32 permissionId)
Adds a new granted permission.
void RemovePermissions(RBACPermissionContainer const &permsFrom, RBACPermissionContainer &permsTo)
Removes a list of permissions to another list.
void ExpandPermissions(RBACPermissionContainer &permissions)
bool HasDeniedPermission(uint32 permissionId) const
Checks if a permission is denied.
uint32 GetId() const
Gets the Id of the Object.
void AddPermissions(RBACPermissionContainer const &permsFrom, RBACPermissionContainer &permsTo)
Adds a list of permissions to another list.
void ClearData()
Clears roles, groups and permissions - Used for reload.
RBACPermissionContainer _globalPerms
RBACPermissionContainer const & GetGrantedPermissions() const
Returns all the granted permissions.
RBACPermissionContainer _deniedPerms
void CalculateNewPermissions()
RBACCommandResult DenyPermission(uint32 permissionId, int32 realmId=0)
bool HasGrantedPermission(uint32 permissionId) const
Checks if a permission is granted.
std::string const & GetName() const
Gets the Name of the Object.
void RemoveDeniedPermission(uint32 permissionId)
Removes a denied permission.
void RemoveGrantedPermission(uint32 permissionId)
Removes a granted permission.
RBACCommandResult RevokePermission(uint32 permissionId, int32 realmId=0)
void LoadFromDB()
Loads all permissions assigned to current account.
void SavePermission(uint32 role, bool granted, int32 realm) const
Saves a permission to DB, Granted or Denied.
bool HasPermission(uint32 permission) const
RBACPermissionContainer const & GetLinkedPermissions() const
Gets the Permissions linked to this permission.
@ CONFIG_RBAC_FREE_PERMISSION_MODE
std::string GetDebugPermissionString(RBACPermissionContainer const &perms)
@ RBAC_CANT_REVOKE_NOT_IN_LIST
@ RBAC_ID_DOES_NOT_EXISTS
@ RBAC_CANT_ADD_ALREADY_ADDED
std::set< uint32 > RBACPermissionContainer
LoginDatabaseWorkerPool LoginDatabase