TrinityCore
Loading...
Searching...
No Matches
rbac::RBACData Class Reference

#include <RBAC.h>

Public Member Functions

 RBACData (uint32 id, std::string const &name, int32 realmId, uint8 secLevel=255)
 
 RBACData (RBACData const &other)
 
 RBACData (RBACData &&other) noexcept
 
RBACDataoperator= (RBACData const &right)
 
RBACDataoperator= (RBACData &&right) noexcept
 
 ~RBACData ()
 
std::string const & GetName () const
 Gets the Name of the Object.
 
uint32 GetId () const
 Gets the Id of the Object.
 
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.h:841
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)
TC_LOG_DEBUG("entities.player", "Failed to grant permission {}, already denied", permissionId);
uint32_t uint32
Definition Define.h:154
#define TC_LOG_DEBUG(filterType__, message__,...)
Definition Log.h:181
@ RBAC_IN_DENIED_LIST
Definition RBAC.h:765
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)
TC_LOG_DEBUG("entities.player", "Role Id {} does not exists", permissionId);
@ RBAC_ID_DOES_NOT_EXISTS
Definition RBAC.h:766
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 &permsFrom, RBACPermissionContainer const &permsToRemove)
 Removes a list of permissions from 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
uint32 _id
 
std::string _name
 

‍Account id


 
int32 _realmId
 

‍Account name


 
uint8 _secLevel
 

‍RealmId Affected


 
RBACPermissionContainer _grantedPerms
 

‍Account SecurityLevel


 
RBACPermissionContainer _deniedPerms
 

‍Granted permissions


 
RBACPermissionContainer _globalPerms
 

‍Denied permissions


 
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)
TC_LOG_DEBUG("entities.player", "Permission {} succesfully removed", permissionId);
@ RBAC_OK
Definition RBAC.h:761
RBACCommandResult RevokePermission (uint32 permissionId, int32 realmId=0)
 
void LoadFromDB ()
 Loads all permissions assigned to current account.
 
QueryCallback LoadFromDBAsync ()
 
void LoadFromDBCallback (PreparedQueryResult result)
 
void SetSecurityLevel (uint8 id)
 Sets security level.
 
uint8 GetSecurityLevel () const
 Returns the security level assigned.
 
void SavePermission (uint32 role, bool granted, int32 realm)
 Saves a permission to DB, Granted or Denied.
 
void ClearData ()
 Clears roles, groups and permissions - Used for reload.
 

Detailed Description

Definition at line 810 of file RBAC.h.

Constructor & Destructor Documentation

◆ RBACData() [1/3]

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

Definition at line 44 of file RBAC.cpp.

◆ RBACData() [2/3]

rbac::RBACData::RBACData ( RBACData const &  other)
default

◆ RBACData() [3/3]

rbac::RBACData::RBACData ( RBACData &&  other)
defaultnoexcept

◆ ~RBACData()

rbac::RBACData::~RBACData ( )
default

Member Function Documentation

◆ AddDeniedPermission()

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

Adds a new denied permission.

Definition at line 988 of file RBAC.h.

+ Here is the caller graph for this function:

◆ AddGrantedPermission()

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

Adds a new granted permission.

Definition at line 976 of file RBAC.h.

+ Here is the caller graph for this function:

◆ AddPermissions()

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

Adds a list of permissions to another list.

Definition at line 248 of file RBAC.cpp.

◆ CalculateNewPermissions()

void rbac::RBACData::CalculateNewPermissions ( )
private

Definition at line 236 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ClearData()

void rbac::RBACData::ClearData ( )
private

Clears roles, groups and permissions - Used for reload.

Definition at line 288 of file RBAC.cpp.

+ Here is the caller graph for this function:

◆ DenyPermission()

RBACCommandResult rbac::RBACData::DenyPermission ( uint32  permissionId,
int32  realmId = 0 
)

Definition at line 100 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ExpandPermissions()

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

Definition at line 260 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetDeniedPermissions()

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

Returns all the denied permissions.

Definition at line 852 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GetGrantedPermissions()

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

Returns all the granted permissions.

Definition at line 850 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GetId()

uint32 rbac::RBACData::GetId ( ) const
inline

Gets the Id of the Object.

Definition at line 823 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GetName()

std::string const & rbac::RBACData::GetName ( ) const
inline

Gets the Name of the Object.

Definition at line 821 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GetPermissions()

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

Returns all the granted permissions (after computation)

Definition at line 848 of file RBAC.h.

◆ GetRealmId()

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

Definition at line 958 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GetSecurityLevel()

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

Returns the security level assigned.

Definition at line 940 of file RBAC.h.

+ Here is the caller graph for this function:

◆ GrantPermission()

RBACCommandResult rbac::RBACData::GrantPermission ( uint32  permissionId,
int32  realmId = 0 
)

Definition at line 56 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HasDeniedPermission()

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

Checks if a permission is denied.

Definition at line 970 of file RBAC.h.

+ Here is the caller graph for this function:

◆ HasGrantedPermission()

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

Checks if a permission is granted.

Definition at line 964 of file RBAC.h.

+ Here is the caller graph for this function:

◆ HasPermission()

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

Definition at line 841 of file RBAC.h.

+ Here is the caller graph for this function:

◆ LoadFromDB()

void rbac::RBACData::LoadFromDB ( )

Loads all permissions assigned to current account.

Definition at line 187 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadFromDBAsync()

QueryCallback rbac::RBACData::LoadFromDBAsync ( )

Definition at line 200 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ LoadFromDBCallback()

void rbac::RBACData::LoadFromDBCallback ( PreparedQueryResult  result)

Definition at line 213 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator=() [1/2]

RBACData & rbac::RBACData::operator= ( RBACData &&  right)
defaultnoexcept

◆ operator=() [2/2]

RBACData & rbac::RBACData::operator= ( RBACData const &  right)
default

◆ RemoveDeniedPermission()

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

Removes a denied permission.

Definition at line 994 of file RBAC.h.

+ Here is the caller graph for this function:

◆ RemoveGrantedPermission()

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

Removes a granted permission.

Definition at line 982 of file RBAC.h.

+ Here is the caller graph for this function:

◆ RemovePermissions()

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

Removes a list of permissions from another list.

Definition at line 254 of file RBAC.cpp.

+ Here is the caller graph for this function:

◆ RevokePermission()

RBACCommandResult rbac::RBACData::RevokePermission ( uint32  permissionId,
int32  realmId = 0 
)

Definition at line 154 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SavePermission()

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

Saves a permission to DB, Granted or Denied.

Definition at line 144 of file RBAC.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetSecurityLevel()

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

Sets security level.

Definition at line 933 of file RBAC.h.

Member Data Documentation

◆ _deniedPerms

RBACPermissionContainer rbac::RBACData::_deniedPerms
private

‍Granted permissions

Definition at line 1019 of file RBAC.h.

◆ _globalPerms

RBACPermissionContainer rbac::RBACData::_globalPerms
private

‍Denied permissions

Definition at line 1020 of file RBAC.h.

◆ _grantedPerms

RBACPermissionContainer rbac::RBACData::_grantedPerms
private

‍Account SecurityLevel

Definition at line 1018 of file RBAC.h.

◆ _id

uint32 rbac::RBACData::_id
private

Definition at line 1014 of file RBAC.h.

◆ _name

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

‍Account id

Definition at line 1015 of file RBAC.h.

◆ _realmId

int32 rbac::RBACData::_realmId
private

‍Account name

Definition at line 1016 of file RBAC.h.

◆ _secLevel

uint8 rbac::RBACData::_secLevel
private

‍RealmId Affected

Definition at line 1017 of file RBAC.h.


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