Core/Commands: Added "createGameAccount" argument to .bnetaccount create command (default true) to opt out of creating the initial game account

This commit is contained in:
Shauren
2015-01-17 20:02:19 +01:00
parent 17039cd922
commit 58d75eda3a
5 changed files with 26 additions and 5 deletions

View File

@@ -23,7 +23,7 @@
using GameAccountMgr = AccountMgr;
AccountOpResult Battlenet::AccountMgr::CreateBattlenetAccount(std::string email, std::string password)
AccountOpResult Battlenet::AccountMgr::CreateBattlenetAccount(std::string email, std::string password, bool withGameAccount /*= true*/)
{
if (utf8length(email) > MAX_BNET_EMAIL_STR)
return AccountOpResult::AOR_NAME_TOO_LONG;
@@ -45,7 +45,9 @@ AccountOpResult Battlenet::AccountMgr::CreateBattlenetAccount(std::string email,
uint32 newAccountId = GetId(email);
ASSERT(newAccountId);
GameAccountMgr::instance()->CreateAccount(std::to_string(newAccountId) + "#1", password, email, newAccountId, 1);
if (withGameAccount)
GameAccountMgr::instance()->CreateAccount(std::to_string(newAccountId) + "#1", password, email, newAccountId, 1);
return AccountOpResult::AOR_OK;
}

View File

@@ -29,7 +29,7 @@ namespace Battlenet
{
namespace AccountMgr
{
AccountOpResult CreateBattlenetAccount(std::string email, std::string password);
AccountOpResult CreateBattlenetAccount(std::string email, std::string password, bool withGameAccount = true);
AccountOpResult ChangePassword(uint32 accountId, std::string newPassword);
bool CheckPassword(uint32 accountId, std::string password);
AccountOpResult LinkWithGameAccount(std::string const& email, std::string const& gameAccountName);

View File

@@ -21,6 +21,7 @@
#include "Language.h"
#include "Player.h"
#include "ScriptMgr.h"
#include "Util.h"
class battlenet_account_commandscript : public CommandScript
{
@@ -84,7 +85,12 @@ public:
return false;
}
switch (Battlenet::AccountMgr::CreateBattlenetAccount(std::string(accountName), std::string(password)))
char* createGameAccountParam = strtok(NULL, " ");
bool createGameAccount = true;
if (createGameAccountParam)
createGameAccount = StringToBool(createGameAccountParam);
switch (Battlenet::AccountMgr::CreateBattlenetAccount(std::string(accountName), std::string(password), createGameAccount))
{
case AccountOpResult::AOR_OK:
handler->PSendSysMessage(LANG_ACCOUNT_CREATED, accountName);
@@ -417,7 +423,11 @@ public:
uint8 index = Battlenet::AccountMgr::GetMaxIndex(accountId) + 1;
std::string accountName = std::to_string(accountId) + '#' + std::to_string(uint32(index));
switch (sAccountMgr->CreateAccount(accountName, "DUMMY", bnetAccountName, accountId, index))
// Generate random hex string for password, these accounts must not be logged on with GRUNT
BigNumber randPassword;
randPassword.SetRand(8 * 16);
switch (sAccountMgr->CreateAccount(accountName, ByteArrayToHexStr(randPassword.AsByteArray().get(), randPassword.GetNumBytes()), bnetAccountName, accountId, index))
{
case AccountOpResult::AOR_OK:
handler->PSendSysMessage(LANG_ACCOUNT_CREATED, accountName.c_str());

View File

@@ -24,6 +24,7 @@
#include "Errors.h" // for ASSERT
#include <stdarg.h>
#include <boost/thread/tss.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#if COMPILER == COMPILER_GNU
#include <sys/socket.h>
@@ -605,3 +606,9 @@ void HexStrToByteArray(std::string const& str, uint8* out, bool reverse /*= fals
out[j++] = strtoul(buffer, NULL, 16);
}
}
bool StringToBool(std::string const& str)
{
std::string lowerStr = boost::algorithm::to_lower_copy(str);
return lowerStr == "1" || lowerStr == "true" || lowerStr == "yes";
}

View File

@@ -370,6 +370,8 @@ uint32 CreatePIDFile(const std::string& filename);
std::string ByteArrayToHexStr(uint8 const* bytes, uint32 length, bool reverse = false);
void HexStrToByteArray(std::string const& str, uint8* out, bool reverse = false);
bool StringToBool(std::string const& str);
// simple class for not-modifyable list
template <typename T>
class HookList