mirror of
https://github.com/Expand-sys/CCash
synced 2025-12-17 00:22:14 +11:00
✨ Return to Reserve Feature
This commit is contained in:
parent
bc067bafe9
commit
0b10a51a19
2 changed files with 25 additions and 3 deletions
|
|
@ -7,4 +7,8 @@ constexpr unsigned pre_log_size = 10;
|
||||||
constexpr unsigned max_name_size = 50;
|
constexpr unsigned max_name_size = 50;
|
||||||
|
|
||||||
constexpr const char *users_location = "../users.json";
|
constexpr const char *users_location = "../users.json";
|
||||||
constexpr const char *config_location = "../config.json";
|
constexpr const char *config_location = "../config.json";
|
||||||
|
|
||||||
|
//returns money to an account on deletion
|
||||||
|
constexpr bool return_on_del = false;
|
||||||
|
constexpr const char *return_account = "";
|
||||||
22
src/bank.cpp
22
src/bank.cpp
|
|
@ -43,7 +43,16 @@ int_fast8_t Bank::DelUser(const std::string &name, const std::string &attempt) n
|
||||||
{
|
{
|
||||||
std::shared_lock<std::shared_mutex> lock{size_l};
|
std::shared_lock<std::shared_mutex> lock{size_l};
|
||||||
bool state = false;
|
bool state = false;
|
||||||
if (users.erase_if(name, [&state, &attempt](User &u) { return state = (XXH3_64bits(attempt.data(), attempt.size()) == u.password); }))
|
if (users.erase_if(name, [this, &name, &state, &attempt](User &u) {
|
||||||
|
if constexpr (return_on_del)
|
||||||
|
{
|
||||||
|
if (SendFunds(name, return_account, u.balance, attempt) == 1)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return state = (XXH3_64bits(attempt.data(), attempt.size()) == u.password);
|
||||||
|
}))
|
||||||
{
|
{
|
||||||
return (state) ? true : ErrorResponse::WrongPassword;
|
return (state) ? true : ErrorResponse::WrongPassword;
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +65,16 @@ int_fast8_t Bank::AdminDelUser(const std::string &name, const std::string &attem
|
||||||
{
|
{
|
||||||
std::shared_lock<std::shared_mutex> lock{size_l};
|
std::shared_lock<std::shared_mutex> lock{size_l};
|
||||||
bool state = false;
|
bool state = false;
|
||||||
if (users.erase_if(name, [this, &state, &attempt](const User &) { return state = (admin_pass == attempt); }))
|
if (users.erase_if(name, [this, &name, &state, &attempt](const User &u) {
|
||||||
|
if constexpr (return_on_del)
|
||||||
|
{
|
||||||
|
if (SendFunds(name, return_account, u.balance, attempt) == 1)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return state = (XXH3_64bits(attempt.data(), attempt.size()) == u.password);
|
||||||
|
}))
|
||||||
{
|
{
|
||||||
return (state) ? true : ErrorResponse::WrongPassword;
|
return (state) ? true : ErrorResponse::WrongPassword;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue