Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
rbac::RBACData Class Reference

#include <RBAC.h>

Public Member Functions

uint32 GetId () const
 Gets the Id of the Object.
std::string const & GetName () const
 Gets the Name of the Object.
 RBACData (uint32 id, std::string const &name, int32 realmId, uint8 secLevel=255)
HasPermission

Checks if certain action is allowed

Checks if certain action can be performed.

Returns
grant or deny action

Example Usage:

bool Player::CanJoinArena(Battleground* bg)
{
return bg->isArena() && HasPermission(RBAC_PERM_JOIN_ARENA);
}
bool isArena() const
bool HasPermission(uint32 permission) const
Definition RBAC.cpp:31
bool HasPermission (uint32 permission) const
RBACPermissionContainer const & GetPermissions () const
 Returns all the granted permissions (after computation).
RBACPermissionContainer const & GetGrantedPermissions () const
 Returns all the granted permissions.
RBACPermissionContainer const & GetDeniedPermissions () const
 Returns all the denied permissions.
GrantRole

Grants a permission

Grants a permission to the account. If realm is 0 or the permission can not be added No save to db action will be performed.

Fails if permission Id does not exists or permission already granted or denied

Parameters
permissionIdpermission to be granted
realmIdrealm affected
Returns
Success or failure (with reason) to grant the permission

Example Usage: // previously defined "RBACData* rbac" with proper initialization uint32 permissionId = 2; if (rbac->GrantRole(permissionId) == RBAC_IN_DENIED_LIST) SF_LOG_DEBUG("entities.player", "Failed to grant permission %u, already denied", permissionId);

RBACCommandResult GrantPermission (uint32 permissionId, int32 realmId=0)
DenyPermission

Denies a permission

Denied a permission to the account. If realm is 0 or the permission can not be added No save to db action will be performed.

Fails if permission Id does not exists or permission already granted or denied

Parameters
permissionIdpermission to be denied
realmIdrealm affected
Returns
Success or failure (with reason) to deny the permission

Example Usage: // previously defined "RBACData* rbac" with proper initialization uint32 permissionId = 2; if (rbac->DenyRole(permissionId) == RBAC_ID_DOES_NOT_EXISTS) SF_LOG_DEBUG("entities.player", "Role Id %u does not exists", permissionId);

RBACCommandResult DenyPermission (uint32 permissionId, int32 realmId=0)

Private Member Functions

CalculateNewPermissions

Calculates new permissions

Calculates new permissions after some change The calculation is done Granted - Denied:

  • Granted permissions: through linked permissions and directly assigned
  • Denied permissions: through linked permissions and directly assigned
void CalculateNewPermissions ()
int32 GetRealmId () const
bool HasGrantedPermission (uint32 permissionId) const
 Checks if a permission is granted.
bool HasDeniedPermission (uint32 permissionId) const
 Checks if a permission is denied.
void AddGrantedPermission (uint32 permissionId)
 Adds a new granted permission.
void RemoveGrantedPermission (uint32 permissionId)
 Removes a granted permission.
void AddDeniedPermission (uint32 permissionId)
 Adds a new denied permission.
void RemoveDeniedPermission (uint32 permissionId)
 Removes a denied permission.
void AddPermissions (RBACPermissionContainer const &permsFrom, RBACPermissionContainer &permsTo)
 Adds a list of permissions to another list.
void RemovePermissions (RBACPermissionContainer const &permsFrom, RBACPermissionContainer &permsTo)
 Removes a list of permissions to another list.

ExpandPermissions

Adds the list of linked permissions to the original list

Given a list of permissions, gets all the inherited permissions

Parameters
permissionsThe list of permissions to expand
Returns
new list of permissions containing original permissions and all other pemissions that are linked to the original ones
uint32 _id
std::string _name
int32 _realmId
uint8 _secLevel
RBACPermissionContainer _grantedPerms
RBACPermissionContainer _deniedPerms
RBACPermissionContainer _globalPerms
void ExpandPermissions (RBACPermissionContainer &permissions)

RevokePermission

Removes a permission

Removes a permission from the account. If realm is 0 or the permission can not be removed No save to db action will be performed. Any delete operation will always affect "all realms (-1)" in addition to the realm specified

Fails if permission not present

Parameters
permissionIdpermission to be removed
realmIdrealm affected
Returns
Success or failure (with reason) to remove the permission

Example Usage: // previously defined "RBACData* rbac" with proper initialization uint32 permissionId = 2; if (rbac->RevokeRole(permissionId) == RBAC_OK) SF_LOG_DEBUG("entities.player", "Permission %u succesfully removed", permissionId);

RBACCommandResult RevokePermission (uint32 permissionId, int32 realmId=0)
void LoadFromDB ()
 Loads all permissions assigned to current account.
void SetSecurityLevel (uint8 id)
 Sets security level.
uint8 GetSecurityLevel () const
 Returns the security level assigned.
void SavePermission (uint32 role, bool granted, int32 realm) const
 Saves a permission to DB, Granted or Denied.
void ClearData ()
 Clears roles, groups and permissions - Used for reload.

Detailed Description

Definition at line 762 of file RBAC.h.

Constructor & Destructor Documentation

◆ RBACData()

rbac::RBACData::RBACData ( uint32 id,
std::string const & name,
int32 realmId,
uint8 secLevel = 255 )
inline

Definition at line 765 of file RBAC.h.

References _deniedPerms, _globalPerms, _grantedPerms, _id, _name, _realmId, and _secLevel.

Member Function Documentation

◆ AddDeniedPermission()

void rbac::RBACData::AddDeniedPermission ( uint32 permissionId)
inlineprivate

Adds a new denied permission.

Definition at line 928 of file RBAC.h.

References _deniedPerms.

Referenced by DenyPermission().

◆ AddGrantedPermission()

void rbac::RBACData::AddGrantedPermission ( uint32 permissionId)
inlineprivate

Adds a new granted permission.

Definition at line 916 of file RBAC.h.

References _grantedPerms.

Referenced by GrantPermission().

◆ AddPermissions()

void rbac::RBACData::AddPermissions ( RBACPermissionContainer const & permsFrom,
RBACPermissionContainer & permsTo )
private

Adds a list of permissions to another list.

Definition at line 214 of file RBAC.cpp.

◆ CalculateNewPermissions()

void rbac::RBACData::CalculateNewPermissions ( )
private

◆ ClearData()

void rbac::RBACData::ClearData ( )
private

Clears roles, groups and permissions - Used for reload.

Definition at line 254 of file RBAC.cpp.

References _deniedPerms, _globalPerms, and _grantedPerms.

Referenced by LoadFromDB().

◆ DenyPermission()

◆ ExpandPermissions()

void rbac::RBACData::ExpandPermissions ( RBACPermissionContainer & permissions)
private

◆ GetDeniedPermissions()

RBACPermissionContainer const & rbac::RBACData::GetDeniedPermissions ( ) const
inline

Returns all the denied permissions.

Definition at line 797 of file RBAC.h.

References _deniedPerms.

Referenced by CalculateNewPermissions(), and rbac_commandscript::HandleRBACPermListCommand().

◆ GetGrantedPermissions()

RBACPermissionContainer const & rbac::RBACData::GetGrantedPermissions ( ) const
inline

Returns all the granted permissions.

Definition at line 795 of file RBAC.h.

References _grantedPerms.

Referenced by CalculateNewPermissions(), and rbac_commandscript::HandleRBACPermListCommand().

◆ GetId()

◆ GetName()

◆ GetPermissions()

RBACPermissionContainer const & rbac::RBACData::GetPermissions ( ) const
inline

Returns all the granted permissions (after computation).

Definition at line 793 of file RBAC.h.

References _globalPerms.

◆ GetRealmId()

int32 rbac::RBACData::GetRealmId ( ) const
inlineprivate

Definition at line 898 of file RBAC.h.

References _realmId.

Referenced by LoadFromDB().

◆ GetSecurityLevel()

uint8 rbac::RBACData::GetSecurityLevel ( ) const
inline

Returns the security level assigned.

Definition at line 880 of file RBAC.h.

References _secLevel.

Referenced by rbac_commandscript::HandleRBACPermListCommand().

◆ GrantPermission()

◆ HasDeniedPermission()

bool rbac::RBACData::HasDeniedPermission ( uint32 permissionId) const
inlineprivate

Checks if a permission is denied.

Definition at line 910 of file RBAC.h.

References _deniedPerms.

Referenced by DenyPermission(), GrantPermission(), and RevokePermission().

◆ HasGrantedPermission()

bool rbac::RBACData::HasGrantedPermission ( uint32 permissionId) const
inlineprivate

Checks if a permission is granted.

Definition at line 904 of file RBAC.h.

References _grantedPerms.

Referenced by DenyPermission(), GrantPermission(), and RevokePermission().

◆ HasPermission()

bool rbac::RBACData::HasPermission ( uint32 permission) const

Definition at line 31 of file RBAC.cpp.

References _globalPerms, CONFIG_RBAC_FREE_PERMISSION_MODE, and sWorld.

◆ LoadFromDB()

◆ RemoveDeniedPermission()

void rbac::RBACData::RemoveDeniedPermission ( uint32 permissionId)
inlineprivate

Removes a denied permission.

Definition at line 934 of file RBAC.h.

References _deniedPerms.

Referenced by RevokePermission().

◆ RemoveGrantedPermission()

void rbac::RBACData::RemoveGrantedPermission ( uint32 permissionId)
inlineprivate

Removes a granted permission.

Definition at line 922 of file RBAC.h.

References _grantedPerms.

Referenced by RevokePermission().

◆ RemovePermissions()

void rbac::RBACData::RemovePermissions ( RBACPermissionContainer const & permsFrom,
RBACPermissionContainer & permsTo )
private

Removes a list of permissions to another list.

Definition at line 220 of file RBAC.cpp.

Referenced by CalculateNewPermissions().

◆ RevokePermission()

◆ SavePermission()

void rbac::RBACData::SavePermission ( uint32 role,
bool granted,
int32 realm ) const
private

Saves a permission to DB, Granted or Denied.

Definition at line 127 of file RBAC.cpp.

References GetId(), LOGIN_INS_RBAC_ACCOUNT_PERMISSION, LoginDatabase, PreparedStatement::setBool(), PreparedStatement::setInt32(), and PreparedStatement::setUInt32().

Referenced by DenyPermission(), and GrantPermission().

◆ SetSecurityLevel()

void rbac::RBACData::SetSecurityLevel ( uint8 id)
inline

Sets security level.

Definition at line 873 of file RBAC.h.

References _secLevel, and LoadFromDB().

Member Data Documentation

◆ _deniedPerms

RBACPermissionContainer rbac::RBACData::_deniedPerms
private

Granted permissions

Definition at line 962 of file RBAC.h.

Referenced by AddDeniedPermission(), ClearData(), GetDeniedPermissions(), HasDeniedPermission(), RBACData(), and RemoveDeniedPermission().

◆ _globalPerms

RBACPermissionContainer rbac::RBACData::_globalPerms
private

Denied permissions

Definition at line 963 of file RBAC.h.

Referenced by CalculateNewPermissions(), ClearData(), GetPermissions(), HasPermission(), and RBACData().

◆ _grantedPerms

RBACPermissionContainer rbac::RBACData::_grantedPerms
private

Account SecurityLevel

Definition at line 961 of file RBAC.h.

Referenced by AddGrantedPermission(), ClearData(), GetGrantedPermissions(), HasGrantedPermission(), RBACData(), and RemoveGrantedPermission().

◆ _id

uint32 rbac::RBACData::_id
private

Definition at line 957 of file RBAC.h.

Referenced by GetId(), and RBACData().

◆ _name

std::string rbac::RBACData::_name
private

Account id

Definition at line 958 of file RBAC.h.

Referenced by GetName(), and RBACData().

◆ _realmId

int32 rbac::RBACData::_realmId
private

Account name

Definition at line 959 of file RBAC.h.

Referenced by GetRealmId(), and RBACData().

◆ _secLevel

uint8 rbac::RBACData::_secLevel
private

RealmId Affected

Definition at line 960 of file RBAC.h.

Referenced by GetSecurityLevel(), LoadFromDB(), RBACData(), and SetSecurityLevel().


The documentation for this class was generated from the following files: