mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-24 11:42:36 +00:00
Add another API endpoint [skip ci]
This commit is contained in:
parent
34a4db6302
commit
40696a132b
@ -33,10 +33,11 @@ EQ::Event::TaskScheduler task_runner;
|
|||||||
* @param email
|
* @param email
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int32 AccountManagement::CreateLocalLoginServerAccount(
|
int32 AccountManagement::CreateLoginServerAccount(
|
||||||
std::string username,
|
std::string username,
|
||||||
std::string password,
|
std::string password,
|
||||||
std::string email
|
std::string email,
|
||||||
|
const std::string &source_loginserver
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
auto mode = server.options.GetEncryptionMode();
|
auto mode = server.options.GetEncryptionMode();
|
||||||
@ -49,19 +50,18 @@ int32 AccountManagement::CreateLocalLoginServerAccount(
|
|||||||
mode
|
mode
|
||||||
);
|
);
|
||||||
|
|
||||||
unsigned int db_id = 0;
|
unsigned int db_id = 0;
|
||||||
std::string db_loginserver = server.options.GetDefaultLoginServerName();
|
if (server.db->DoesLoginServerAccountExist(username, hash, source_loginserver, 1)) {
|
||||||
if (server.db->DoesLoginServerAccountExist(username, hash, db_loginserver, 1)) {
|
|
||||||
LogWarning(
|
LogWarning(
|
||||||
"Attempting to create local login account for user [{0}] login [{1}] but already exists!",
|
"Attempting to create local login account for user [{0}] login [{1}] but already exists!",
|
||||||
username,
|
username,
|
||||||
db_loginserver
|
source_loginserver
|
||||||
);
|
);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 created_account_id = server.db->CreateLoginAccount(username, hash, db_loginserver, email);
|
uint32 created_account_id = server.db->CreateLoginAccount(username, hash, source_loginserver, email);
|
||||||
if (created_account_id > 0) {
|
if (created_account_id > 0) {
|
||||||
LogInfo(
|
LogInfo(
|
||||||
"Account creation success for user [{0}] encryption algorithm [{1}] ({2}) id: [{3}]",
|
"Account creation success for user [{0}] encryption algorithm [{1}] ({2}) id: [{3}]",
|
||||||
@ -323,7 +323,7 @@ uint32 AccountManagement::CheckExternalLoginserverUserCredentials(
|
|||||||
auto m_dbid = sp.GetUInt32(8);
|
auto m_dbid = sp.GetUInt32(8);
|
||||||
|
|
||||||
{
|
{
|
||||||
ret = (response_error <= 101 ? m_dbid : 0);
|
ret = (response_error <= 101 ? m_dbid : 0);
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -30,9 +30,15 @@ public:
|
|||||||
* @param username
|
* @param username
|
||||||
* @param password
|
* @param password
|
||||||
* @param email
|
* @param email
|
||||||
|
* @param source_loginserver
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
static int32 CreateLocalLoginServerAccount(std::string username, std::string password, std::string email = "");
|
static int32 CreateLoginServerAccount(
|
||||||
|
std::string username,
|
||||||
|
std::string password,
|
||||||
|
std::string email = "",
|
||||||
|
const std::string &source_loginserver = "local"
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param username
|
* @param username
|
||||||
|
|||||||
@ -145,7 +145,7 @@ namespace LoginserverCommandHandler {
|
|||||||
|
|
||||||
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
|
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
|
||||||
|
|
||||||
AccountManagement::CreateLocalLoginServerAccount(
|
AccountManagement::CreateLoginServerAccount(
|
||||||
cmd("--username").str(),
|
cmd("--username").str(),
|
||||||
cmd("--password").str(),
|
cmd("--password").str(),
|
||||||
cmd("--email").str()
|
cmd("--email").str()
|
||||||
|
|||||||
@ -81,7 +81,48 @@ namespace LoginserverWebserver {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 account_created_id = AccountManagement::CreateLocalLoginServerAccount(username, password, email);
|
int32 account_created_id = AccountManagement::CreateLoginServerAccount(username, password, email);
|
||||||
|
if (account_created_id > 0) {
|
||||||
|
response["message"] = "Account created successfully!";
|
||||||
|
response["data"]["account_id"] = account_created_id;
|
||||||
|
}
|
||||||
|
else if (account_created_id == -1) {
|
||||||
|
response["error"] = "Account already exists!";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
response["error"] = "Account failed to create!";
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginserverWebserver::SendResponse(response, res);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
api.Post(
|
||||||
|
"/account/create/external", [](const httplib::Request &request, httplib::Response &res) {
|
||||||
|
if (!LoginserverWebserver::TokenManager::AuthCanWrite(request, res)) {
|
||||||
|
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 response;
|
||||||
|
if (username.empty() || password.empty()) {
|
||||||
|
response["error"] = "Username or password not set";
|
||||||
|
LoginserverWebserver::SendResponse(response, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string source_loginserver = "eqemu";
|
||||||
|
int32 account_created_id = AccountManagement::CreateLoginServerAccount(
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
email,
|
||||||
|
source_loginserver
|
||||||
|
);
|
||||||
|
|
||||||
if (account_created_id > 0) {
|
if (account_created_id > 0) {
|
||||||
response["message"] = "Account created successfully!";
|
response["message"] = "Account created successfully!";
|
||||||
response["data"]["account_id"] = account_created_id;
|
response["data"]["account_id"] = account_created_id;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user