mirror of
https://github.com/Expand-sys/CCash
synced 2026-03-22 20:47:10 +11:00
🐛🐎 fixed last commit and made faster
This commit is contained in:
parent
84ecfac199
commit
b310c8ec2b
6 changed files with 16 additions and 13 deletions
|
|
@ -51,14 +51,14 @@ public:
|
||||||
BankResponse GetBal(const std::string &name) const noexcept;
|
BankResponse GetBal(const std::string &name) const noexcept;
|
||||||
BankResponse GetLogs(const std::string &name) noexcept;
|
BankResponse GetLogs(const std::string &name) noexcept;
|
||||||
BankResponse SendFunds(const std::string &a_name, const std::string &b_name, uint32_t amount) noexcept;
|
BankResponse SendFunds(const std::string &a_name, const std::string &b_name, uint32_t amount) noexcept;
|
||||||
bool VerifyPassword(std::string_view name, std::string_view attempt) const noexcept;
|
bool VerifyPassword(const std::string &name, std::string_view &&attempt) const noexcept;
|
||||||
|
|
||||||
void ChangePassword(const std::string &name, std::string &&new_pass) noexcept;
|
void ChangePassword(const std::string &name, std::string &&new_pass) noexcept;
|
||||||
BankResponse SetBal(const std::string &name, uint32_t amount) noexcept;
|
BankResponse SetBal(const std::string &name, uint32_t amount) noexcept;
|
||||||
BankResponse AddBal(const std::string &name, uint32_t amount) noexcept;
|
BankResponse AddBal(const std::string &name, uint32_t amount) noexcept;
|
||||||
BankResponse SubBal(const std::string &name, uint32_t amount) noexcept;
|
BankResponse SubBal(const std::string &name, uint32_t amount) noexcept;
|
||||||
bool Contains(const std::string &name) const noexcept;
|
bool Contains(const std::string &name) const noexcept;
|
||||||
bool AdminVerifyAccount(std::string_view name) noexcept;
|
bool AdminVerifyAccount(const std::string &name) noexcept;
|
||||||
|
|
||||||
BankResponse AddUser(std::string &&name, uint32_t init_bal, std::string &&init_pass) noexcept;
|
BankResponse AddUser(std::string &&name, uint32_t init_bal, std::string &&init_pass) noexcept;
|
||||||
BankResponse DelUser(const std::string &name) noexcept;
|
BankResponse DelUser(const std::string &name) noexcept;
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,5 @@
|
||||||
struct xxHashStringGen
|
struct xxHashStringGen
|
||||||
{
|
{
|
||||||
XXH64_hash_t operator()(const std::string &str) const noexcept;
|
XXH64_hash_t operator()(const std::string &str) const noexcept;
|
||||||
|
XXH64_hash_t operator()(std::string_view &&str) const noexcept;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -21,13 +21,13 @@ void AdminFilter::doFilter(const HttpRequestPtr &req,
|
||||||
if (middle != std::string::npos)
|
if (middle != std::string::npos)
|
||||||
{
|
{
|
||||||
base64_result[middle] = '\0';
|
base64_result[middle] = '\0';
|
||||||
std::string_view username = results_view.substr(0, middle);
|
const std::string &username = results_view.substr(0, middle).data();
|
||||||
if (bank.AdminVerifyAccount(username))
|
if (bank.AdminVerifyAccount(username))
|
||||||
{
|
{
|
||||||
base64_result[new_sz] = '\0';
|
base64_result[new_sz] = '\0';
|
||||||
std::string_view password = results_view.substr(middle + 1);
|
if (bank.VerifyPassword(std::move(username), results_view.substr(middle + 1)))
|
||||||
if (bank.VerifyPassword(username, password))
|
|
||||||
{
|
{
|
||||||
|
req->setBody(username); //feels sub optimal
|
||||||
fccb();
|
fccb();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,10 +126,10 @@ BankResponse Bank::SendFunds(const std::string &a_name, const std::string &b_nam
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
bool Bank::VerifyPassword(std::string_view name, std::string_view attempt) const noexcept
|
bool Bank::VerifyPassword(const std::string &name, std::string_view &&attempt) const noexcept
|
||||||
{
|
{
|
||||||
bool res = false;
|
bool res = false;
|
||||||
users.if_contains(name.data(), [&res, &attempt](const User &u) { res = (u.password == xxHashStringGen{}(attempt.data())); });
|
users.if_contains(name, [&res, &attempt](const User &u) { res = (u.password == xxHashStringGen{}(std::move(attempt))); });
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,7 +210,7 @@ bool Bank::Contains(const std::string &name) const noexcept
|
||||||
{
|
{
|
||||||
return users.contains(name);
|
return users.contains(name);
|
||||||
}
|
}
|
||||||
bool Bank::AdminVerifyAccount(std::string_view name) noexcept
|
bool Bank::AdminVerifyAccount(const std::string &name) noexcept
|
||||||
{
|
{
|
||||||
return (name == admin_account);
|
return (name == admin_account);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,10 @@ void UserFilter::doFilter(const HttpRequestPtr &req,
|
||||||
{
|
{
|
||||||
base64_result[middle] = '\0';
|
base64_result[middle] = '\0';
|
||||||
base64_result[new_sz] = '\0';
|
base64_result[new_sz] = '\0';
|
||||||
|
const std::string &username = results_view.substr(0, middle).data();
|
||||||
std::string_view username = results_view.substr(0, middle);
|
if (bank.VerifyPassword(username, results_view.substr(middle + 1)))
|
||||||
std::string_view password = results_view.substr(middle + 1);
|
|
||||||
|
|
||||||
if (bank.VerifyPassword(username, password))
|
|
||||||
{
|
{
|
||||||
|
req->setBody(username); //feels sub optimal
|
||||||
fccb();
|
fccb();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,7 @@ XXH64_hash_t xxHashStringGen::operator()(const std::string &str) const noexcept
|
||||||
{
|
{
|
||||||
return XXH3_64bits(str.data(), str.size());
|
return XXH3_64bits(str.data(), str.size());
|
||||||
}
|
}
|
||||||
|
XXH64_hash_t xxHashStringGen::operator()(std::string_view &&str) const noexcept
|
||||||
|
{
|
||||||
|
return XXH3_64bits(str.data(), str.size());
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue