mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-04 19:53:52 +00:00
Add Database::DbLoginServerAdmin GetLoginServerAdmin [skip ci]
This commit is contained in:
parent
739f54bbfb
commit
86943ce6be
@ -449,7 +449,8 @@ bool Database::CreateWorldRegistration(
|
||||
std::string server_long_name,
|
||||
std::string server_short_name,
|
||||
std::string server_remote_ip,
|
||||
unsigned int &id
|
||||
unsigned int &id,
|
||||
unsigned int &server_admin_id
|
||||
)
|
||||
{
|
||||
auto results = QueryDatabase("SELECT IFNULL(max(id), 0) + 1 FROM login_world_servers");
|
||||
@ -462,11 +463,12 @@ bool Database::CreateWorldRegistration(
|
||||
id = std::stoi(row[0]);
|
||||
auto insert_query = fmt::format(
|
||||
"INSERT INTO login_world_servers SET id = {0}, long_name = '{1}', short_name = '{2}', last_ip_address = '{3}', \n"
|
||||
"login_server_list_type_id = 3, login_server_admin_id = 0, is_server_trusted = 0, tag_description = ''",
|
||||
"login_server_list_type_id = 3, login_server_admin_id = {4}, is_server_trusted = 0, tag_description = ''",
|
||||
id,
|
||||
server_long_name,
|
||||
server_short_name,
|
||||
server_remote_ip
|
||||
server_remote_ip,
|
||||
server_admin_id
|
||||
);
|
||||
|
||||
auto insert_results = QueryDatabase(insert_query);
|
||||
@ -655,7 +657,7 @@ bool Database::DoesLoginserverWorldAdminAccountExist(
|
||||
)
|
||||
{
|
||||
auto query = fmt::format(
|
||||
"SELECT account_name FROM login_server_admins WHERE account_name = '{0}'",
|
||||
"SELECT account_name FROM login_server_admins WHERE account_name = '{0}' LIMIT 1",
|
||||
EscapeString(account_name)
|
||||
);
|
||||
|
||||
@ -663,3 +665,34 @@ bool Database::DoesLoginserverWorldAdminAccountExist(
|
||||
|
||||
return (results.RowCount() == 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param account_name
|
||||
* @return
|
||||
*/
|
||||
Database::DbLoginServerAdmin Database::GetLoginServerAdmin(const std::string &account_name)
|
||||
{
|
||||
auto query = fmt::format(
|
||||
"SELECT id, account_name, account_password, first_name, last_name, email, registration_date, registration_ip_address"
|
||||
" FROM login_server_admins WHERE account_name = '{0}' LIMIT 1",
|
||||
EscapeString(account_name)
|
||||
);
|
||||
|
||||
auto results = QueryDatabase(query);
|
||||
|
||||
Database::DbLoginServerAdmin login_server_admin{};
|
||||
if (results.RowCount() == 1) {
|
||||
auto row = results.begin();
|
||||
login_server_admin.loaded = true;
|
||||
login_server_admin.id = std::stoi(row[0]);
|
||||
login_server_admin.account_name = row[1];
|
||||
login_server_admin.account_password = row[2];
|
||||
login_server_admin.first_name = row[3];
|
||||
login_server_admin.last_name = row[4];
|
||||
login_server_admin.email = row[5];
|
||||
login_server_admin.registration_date = row[7];
|
||||
login_server_admin.registration_ip_address = row[8];
|
||||
}
|
||||
|
||||
return login_server_admin;
|
||||
}
|
||||
|
||||
@ -195,7 +195,8 @@ public:
|
||||
std::string server_long_name,
|
||||
std::string server_short_name,
|
||||
std::string server_remote_ip,
|
||||
unsigned int &id
|
||||
unsigned int &id,
|
||||
unsigned int &server_admin_id
|
||||
);
|
||||
|
||||
/**
|
||||
@ -235,6 +236,20 @@ public:
|
||||
*/
|
||||
bool DoesLoginserverWorldAdminAccountExist(const std::string &account_name);
|
||||
|
||||
struct DbLoginServerAdmin {
|
||||
bool loaded = false;
|
||||
uint32 id;
|
||||
std::string account_name;
|
||||
std::string account_password;
|
||||
std::string first_name;
|
||||
std::string last_name;
|
||||
std::string email;
|
||||
std::string registration_date;
|
||||
std::string registration_ip_address;
|
||||
};
|
||||
|
||||
Database::DbLoginServerAdmin GetLoginServerAdmin(const std::string &account_name);
|
||||
|
||||
protected:
|
||||
std::string user, pass, host, port, name;
|
||||
MYSQL *database{};
|
||||
|
||||
@ -192,7 +192,7 @@ namespace LoginserverCommandHandler {
|
||||
cmd("--password").str().empty() ||
|
||||
cmd("--email").str().empty()) {
|
||||
|
||||
LogInfo("Command Example: create-loginserver-account --username=user --password=password");
|
||||
LogInfo("Command Example: create-loginserver-world-admin-account --username=* --password=* --email=*");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@ -875,6 +875,23 @@ bool WorldServer::HandleNewLoginserverInfoUnregisteredAllowed(
|
||||
return true;
|
||||
}
|
||||
|
||||
Database::DbLoginServerAdmin login_server_admin =
|
||||
server.db->GetLoginServerAdmin(GetAccountName());
|
||||
|
||||
uint32 server_admin_id = 0;
|
||||
|
||||
if (login_server_admin.loaded) {
|
||||
auto mode = server.options.GetEncryptionMode();
|
||||
if (eqcrypt_verify_hash(
|
||||
GetAccountName(),
|
||||
GetAccountPassword(),
|
||||
login_server_admin.account_password,
|
||||
mode
|
||||
)) {
|
||||
server_admin_id = login_server_admin.id;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto create a registration
|
||||
*/
|
||||
@ -882,7 +899,8 @@ bool WorldServer::HandleNewLoginserverInfoUnregisteredAllowed(
|
||||
GetServerLongName(),
|
||||
GetServerShortName(),
|
||||
GetRemoteIp(),
|
||||
server_id
|
||||
server_id,
|
||||
server_admin_id
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user