82 uint32 guidLow = (*result)[0].GetUInt32();
94 }
while (result->NextRow());
171 std::string username;
173 if (!
GetName(accountId, username))
196 std::string username;
198 if (!
GetName(accountId, username))
219 std::string username;
221 if (!
GetName(accountId, username))
246 return (result) ? (*result)[0].GetUInt32() : 0;
276 name = (*result)[0].GetString();
291 email = (*result)[0].GetString();
300 std::string username;
302 if (!
GetName(accountId, username))
323 std::string oldEmail;
332 if (strcmp(oldEmail.c_str(), newEmail.c_str()) == 0)
345 return (result) ? (*result)[0].GetUInt64() : 0;
353 if (!
Utf8toWStr(utf8String, buffer, maxLength))
356#pragma warning(disable: 4996)
360#pragma warning(default: 4996)
363 return WStrToUtf8(buffer, maxLength, utf8String);
391 SF_LOG_DEBUG(
"rbac",
"AccountMgr::LoadRBAC: Loading permissions");
395 SF_LOG_INFO(
"server.loading",
">> Loaded 0 account permission definitions. DB table `rbac_permissions` is empty.");
401 Field* field = result->Fetch();
405 }
while (result->NextRow());
407 SF_LOG_DEBUG(
"rbac",
"AccountMgr::LoadRBAC: Loading linked permissions");
408 result =
LoginDatabase.Query(
"SELECT id, linkedId FROM rbac_linked_permissions ORDER BY id ASC");
411 SF_LOG_INFO(
"server.loading",
">> Loaded 0 linked permissions. DB table `rbac_linked_permissions` is empty.");
420 Field* field = result->Fetch();
422 if (permissionId != newId)
424 permissionId = newId;
429 if (linkedPermissionId == permissionId)
431 SF_LOG_ERROR(
"sql.sql",
"RBAC Permission %u has itself as linked permission. Ignored", permissionId);
436 }
while (result->NextRow());
438 SF_LOG_DEBUG(
"rbac",
"AccountMgr::LoadRBAC: Loading default permissions");
439 result =
LoginDatabase.Query(
"SELECT secId, permissionId FROM rbac_default_permissions ORDER BY secId ASC");
442 SF_LOG_INFO(
"server.loading",
">> Loaded 0 default permission definitions. DB table `rbac_default_permissions` is empty.");
450 Field* field = result->Fetch();
458 permissions->insert(field[1].GetUInt32());
460 }
while (result->NextRow());
462 SF_LOG_INFO(
"server.loading",
">> Loaded %u permission definitions, %u linked permissions and %u default permissions in %u ms", count1, count2, count3,
GetMSTimeDiffToNow(oldMSTime));
467 if (
rbac && securityLevel ==
rbac->GetSecurityLevel())
468 rbac->SetSecurityLevel(securityLevel);
498 SF_LOG_TRACE(
"rbac",
"AccountMgr::GetRBACPermission: %u", permissionId);
499 rbac::RBACPermissionsContainer::const_iterator it =
_permissions.find(permissionId);
510 SF_LOG_ERROR(
"rbac",
"AccountMgr::HasPermission: Wrong accountId 0");
516 bool hasPermission =
rbac.HasPermission(permissionId);
518 SF_LOG_DEBUG(
"rbac",
"AccountMgr::HasPermission [AccountId: %u, PermissionId: %u, realmId: %d]: %u",
519 accountId, permissionId, realmId, hasPermission);
520 return hasPermission;
@ CHAR_SEL_CHARS_BY_ACCOUNT_ID
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
#define SF_LOG_TRACE(filterType__,...)
#define SF_LOG_INFO(filterType__,...)
@ LOGIN_DEL_ACCOUNT_ACCESS_BY_REALM
@ LOGIN_GET_ACCOUNT_ID_BY_USERNAME
@ LOGIN_SEL_ACCOUNT_BY_ID
@ LOGIN_DEL_ACCOUNT_BANNED
@ LOGIN_UPD_ACCOUNT_BOOST
@ LOGIN_DEL_ACCOUNT_ACCESS
@ LOGIN_GET_GMLEVEL_BY_REALMID
@ LOGIN_GET_USERNAME_BY_ID
@ LOGIN_INS_REALM_CHARACTERS_INIT
@ LOGIN_INS_ACCOUNT_ACCESS
@ LOGIN_DEL_REALM_CHARACTERS
@ LOGIN_SEL_CHECK_PASSWORD
@ LOGIN_GET_ACCOUNT_ACCESS_GMLEVEL
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
bool WStrToUtf8(wchar_t *wstr, size_t size, std::string &utf8str)
bool Utf8toWStr(char const *utf8str, size_t csize, wchar_t *wstr, size_t &wsize)
size_t utf8length(std::string &utf8str)
wchar_t wcharToUpperOnlyLatin(wchar_t wchar)
static AccountOpResult ChangeRegEmail(uint32 accountId, std::string newEmail)
static AccountOpResult DeleteAccount(uint32 accountId)
static bool CheckPassword(uint32 accountId, std::string password)
rbac::RBACPermissionsContainer _permissions
static AccountOpResult ChangeEmail(uint32 accountId, std::string newEmail)
static AccountOpResult ChangeUsername(uint32 accountId, std::string newUsername, std::string newPassword)
static uint32 GetCharactersCount(uint32 accountId)
void UpdateAccountAccess(rbac::RBACData *rbac, uint32 accountId, uint8 securityLevel, int32 realmId)
static bool IsAdminAccount(AccountTypes gmlevel)
static AccountTypes GetSecurity(uint32 accountId)
static AccountOpResult ChangePassword(uint32 accountId, std::string newPassword)
static bool normalizeString(std::string &utf8String)
AccountOpResult CreateAccount(std::string username, std::string password, std::string email)
static uint32 GetId(std::string const &username)
rbac::RBACPermissionContainer const & GetRBACDefaultPermissions(uint8 secLevel)
static bool HasPermission(uint32 accountId, uint32 permission, uint32 realmId)
static bool GetEmail(uint32 accountId, std::string &email)
rbac::RBACDefaultPermissionsContainer _defaultPermissions
static bool IsConsoleAccount(AccountTypes gmlevel)
static bool IsPlayerAccount(AccountTypes gmlevel)
static bool CheckEmail(uint32 accountId, std::string newEmail)
rbac::RBACPermission const * GetRBACPermission(uint32 permission) const
static bool GetName(uint32 accountId, std::string &name)
static Player * FindPlayer(uint64)
static void DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmChars=true, bool deleteFinally=false)
void setBool(const uint8 index, const bool value)
void setString(const uint8 index, const std::string &value)
void setBinary(const uint8 index, const std::vector< uint8 > &value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
void setInt32(const uint8 index, const int32 value)
std::array< uint8, SALT_LENGTH > Salt
static bool CheckLogin(std::string const &username, std::string const &password, Salt const &salt, Verifier const &verifier)
static std::pair< Salt, Verifier > MakeRegistrationData(std::string const &username, std::string const &password)
std::array< uint8, VERIFIER_LENGTH > Verifier
static constexpr size_t VERIFIER_LENGTH
static constexpr size_t SALT_LENGTH
Player session in the World.
void LogoutPlayer(bool save)
Log the player out
void KickPlayer()
Kick a player out of the World.
void AddLinkedPermission(uint32 id)
Adds a new linked Permission.
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ CONFIG_BOOST_NEW_ACCOUNT
std::set< uint32 > RBACPermissionContainer
LoginDatabaseWorkerPool LoginDatabase