diff --git a/loginserver/account_management.cpp b/loginserver/account_management.cpp index 50c467826..9fe7c0785 100644 --- a/loginserver/account_management.cpp +++ b/loginserver/account_management.cpp @@ -31,13 +31,16 @@ EQ::Event::TaskScheduler task_runner; * @param username * @param password * @param email + * @param source_loginserver + * @param ls_account_id * @return */ int32 AccountManagement::CreateLoginServerAccount( std::string username, std::string password, std::string email, - const std::string &source_loginserver + const std::string &source_loginserver, + uint32 ls_account_id ) { auto mode = server.options.GetEncryptionMode(); @@ -61,7 +64,13 @@ int32 AccountManagement::CreateLoginServerAccount( return -1; } - uint32 created_account_id = server.db->CreateLoginAccount(username, hash, source_loginserver, email); + uint32 created_account_id = 0; + if (ls_account_id > 0) { + created_account_id = server.db->CreateLoginDataWithID(username, hash, source_loginserver, ls_account_id); + } else { + created_account_id = server.db->CreateLoginAccount(username, hash, source_loginserver, email); + } + if (created_account_id > 0) { LogInfo( "Account creation success for user [{0}] encryption algorithm [{1}] ({2}) id: [{3}]", diff --git a/loginserver/account_management.h b/loginserver/account_management.h index 4e13c6993..7f81c9aa6 100644 --- a/loginserver/account_management.h +++ b/loginserver/account_management.h @@ -31,13 +31,15 @@ public: * @param password * @param email * @param source_loginserver + * @param ls_account_id * @return */ static int32 CreateLoginServerAccount( std::string username, std::string password, std::string email = "", - const std::string &source_loginserver = "local" + const std::string &source_loginserver = "local", + uint32 ls_account_id = 0 ); /** diff --git a/loginserver/loginserver_webserver.cpp b/loginserver/loginserver_webserver.cpp index ebb3604da..3280f7094 100644 --- a/loginserver/loginserver_webserver.cpp +++ b/loginserver/loginserver_webserver.cpp @@ -103,10 +103,11 @@ namespace LoginserverWebserver { return; } - Json::Value request_body = LoginserverWebserver::ParseRequestBody(request); - std::string username = request_body.get("username", "").asString(); - std::string password = request_body.get("password", "").asString(); - std::string email = request_body.get("email", "").asString(); + Json::Value request_body = LoginserverWebserver::ParseRequestBody(request); + std::string username = request_body.get("username", "").asString(); + std::string password = request_body.get("password", "").asString(); + std::string email = request_body.get("email", "").asString(); + uint32 login_account_id = request_body.get("account_id", "").asInt(); Json::Value response; if (username.empty() || password.empty()) { @@ -120,7 +121,8 @@ namespace LoginserverWebserver { username, password, email, - source_loginserver + source_loginserver, + login_account_id ); if (account_created_id > 0) {