mirror of
https://github.com/Expand-sys/CCash
synced 2026-03-22 20:47:10 +11:00
🔥 simplified via removing allusers
This commit is contained in:
parent
32b6af280e
commit
50e8ca5c7c
2 changed files with 6 additions and 29 deletions
|
|
@ -35,7 +35,7 @@ public:
|
||||||
|
|
||||||
bool AddUser(const std::string &name, std::string &&init_pass)
|
bool AddUser(const std::string &name, std::string &&init_pass)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::shared_mutex> lock{size_lock};
|
std::shared_lock<std::shared_mutex> lock{size_lock};
|
||||||
return users.try_emplace_l(
|
return users.try_emplace_l(
|
||||||
name, [](User &) {}, std::move(init_pass));
|
name, [](User &) {}, std::move(init_pass));
|
||||||
}
|
}
|
||||||
|
|
@ -44,7 +44,7 @@ public:
|
||||||
bool state = (admin_pass == attempt);
|
bool state = (admin_pass == attempt);
|
||||||
if (state)
|
if (state)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::shared_mutex> lock{size_lock};
|
std::shared_lock<std::shared_mutex> lock{size_lock};
|
||||||
state = users.try_emplace_l(
|
state = users.try_emplace_l(
|
||||||
name, [](User &) {}, init_bal, std::move(init_pass));
|
name, [](User &) {}, init_bal, std::move(init_pass));
|
||||||
}
|
}
|
||||||
|
|
@ -53,12 +53,12 @@ public:
|
||||||
|
|
||||||
bool DelUser(const std::string &name, const std::string &attempt)
|
bool DelUser(const std::string &name, const std::string &attempt)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::shared_mutex> lock{size_lock};
|
std::shared_lock<std::shared_mutex> lock{size_lock};
|
||||||
return users.erase_if(name, [&attempt](const User &u) { return (XXH64(attempt.data(), attempt.size(), 1) == u.password); });
|
return users.erase_if(name, [&attempt](const User &u) { return (XXH64(attempt.data(), attempt.size(), 1) == u.password); });
|
||||||
}
|
}
|
||||||
bool AdminDelUser(const std::string &name, const std::string &attempt)
|
bool AdminDelUser(const std::string &name, const std::string &attempt)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::shared_mutex> lock{size_lock};
|
std::shared_lock<std::shared_mutex> lock{size_lock};
|
||||||
return users.erase_if(name, [this, &attempt](const User &) { return (admin_pass == attempt); });
|
return users.erase_if(name, [this, &attempt](const User &) { return (admin_pass == attempt); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,23 +147,6 @@ public:
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Value AllUsers()
|
|
||||||
{
|
|
||||||
Json::Value temp;
|
|
||||||
Json::UInt i = 0;
|
|
||||||
std::shared_lock<std::shared_mutex> lock{size_lock}; //gives readers of users the lock
|
|
||||||
for (const auto &u : users)
|
|
||||||
{
|
|
||||||
//we know it contains this key but we call this func to grab mutex
|
|
||||||
temp[i]["name"] = u.first;
|
|
||||||
users.if_contains(u.first, [&temp, i](const User &u) {
|
|
||||||
temp[i]["balance"] = (Json::UInt)u.balance;
|
|
||||||
});
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Save()
|
void Save()
|
||||||
{
|
{
|
||||||
Json::StreamWriterBuilder builder;
|
Json::StreamWriterBuilder builder;
|
||||||
|
|
@ -174,8 +157,7 @@ public:
|
||||||
|
|
||||||
//loading info into json temp
|
//loading info into json temp
|
||||||
{
|
{
|
||||||
std::shared_lock<std::shared_mutex> lock{size_lock}; //gives readers of users the lock
|
std::scoped_lock<std::shared_mutex, std::shared_mutex> lock{size_lock, send_funds_l};
|
||||||
std::unique_lock<std::shared_mutex> halt_funds{send_funds_l}; //halts all send fund requests
|
|
||||||
for (const auto &u : users)
|
for (const auto &u : users)
|
||||||
{
|
{
|
||||||
//we know it contains this key but we call this func to grab mutex
|
//we know it contains this key but we call this func to grab mutex
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public:
|
||||||
{
|
{
|
||||||
auto resp = HttpResponse::newHttpResponse();
|
auto resp = HttpResponse::newHttpResponse();
|
||||||
auto handlerInfo = app().getHandlersInfo();
|
auto handlerInfo = app().getHandlersInfo();
|
||||||
resp->setBody("<body> <h1>ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE</h1> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/close (POST)</h2> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Closes and Saves the server.</p> </blockquote> <h2>/BankF/user (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of the user being added</p> <p><span style=\"background-color: #808080;\"> init_pass </span> - initial password for the user being added</p> <blockquote> <p>Adds a user to the bank</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/user (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of the user being added</p> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password required to add user with balance</p> <p><span style=\"background-color: #808080;\"> init_bal </span> - initial balance for user being added</p> <p><span style=\"background-color: #808080;\"> init_pass </span> - initial password for user being added</p> <blockquote> <p>Adds a user with initial balance</p> </blockquote> <h2>/BankF/sendfunds (POST)</h2> <p><span style=\"background-color: #808080;\"> a_name </span> - sender's name</p> <p><span style=\"background-color: #808080;\"> b_name </span> - reciever's name</p> <p><span style=\"background-color: #808080;\"> amount </span> - amount being sent</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of sender</p> <blockquote> <p>Sends money from one user to another</p> </blockquote> <h2>/BankF/changepass (PATCH)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user's password being changes</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of user being changed</p> <p><span style=\"background-color: #808080;\"> new_pass </span> - new password to replace the current user's password</p> <blockquote> <p>Changes password of a user, returns -1 if user doesnt exist</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/{<span style=\"color: #339966;\">name</span>}/bal (PATCH)</h2> <p><span style=\"background-color: #808080;\"> name </span> - the name of the user being set</p> <p><span style=\"background-color: #808080;\"> attempt </span> - the admin password required</p> <p><span style=\"background-color: #808080;\"> amount </span> - the new balance of the user</p> <blockquote> <p>Sets the balance of a user</p> </blockquote> <h2>/BankF/help (GET)</h2> <blockquote> <p>the page you're looking at right now!</p> </blockquote> <h2>/BankF/vpass (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being verified</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password being verified</p> <blockquote> <p>returns 0 or 1 based on if [attempt] is equal to the password of the user [name], or -1 if user does not exist. The intended usage for this function is for connected services</p> </blockquote> <h2>/BankF/contains/{<span style=\"color: #339966;\">name</span>} (GET)</h2> <blockquote> <p>returns a 0 or 1 based on if the bank contains the user</p> </blockquote> <h2>/BankF/{<span style=\"color: #339966;\">name</span>}/bal (GET)</h2> <blockquote> <p>returns the balance of a given user's name, if -1 that means the user does not exist</p> </blockquote> <h2>/BankF/allusers/ (GET)</h2> <blockquote> <p>returns an array of all users in the bank, please consider checking out vpass or contains instead of this function when you can.</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/vpass (POST)</h2><p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Verifies if password entered is admin password</p> </blockquote><h2>/BankF/user (DELETE)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being deleted</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of user being deleted</p> <blockquote> <p>Deletes a user with the password of the user as verification</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/user (DELETE)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being deleted</p> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Deletes a user with admin password as verification</p> </blockquote> </body>");
|
resp->setBody("<body> <h1>ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE</h1> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/close (POST)</h2> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Closes and Saves the server.</p> </blockquote> <h2>/BankF/user (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of the user being added</p> <p><span style=\"background-color: #808080;\"> init_pass </span> - initial password for the user being added</p> <blockquote> <p>Adds a user to the bank</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/user (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of the user being added</p> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password required to add user with balance</p> <p><span style=\"background-color: #808080;\"> init_bal </span> - initial balance for user being added</p> <p><span style=\"background-color: #808080;\"> init_pass </span> - initial password for user being added</p> <blockquote> <p>Adds a user with initial balance</p> </blockquote> <h2>/BankF/sendfunds (POST)</h2> <p><span style=\"background-color: #808080;\"> a_name </span> - sender's name</p> <p><span style=\"background-color: #808080;\"> b_name </span> - reciever's name</p> <p><span style=\"background-color: #808080;\"> amount </span> - amount being sent</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of sender</p> <blockquote> <p>Sends money from one user to another</p> </blockquote> <h2>/BankF/changepass (PATCH)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user's password being changes</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of user being changed</p> <p><span style=\"background-color: #808080;\"> new_pass </span> - new password to replace the current user's password</p> <blockquote> <p>Changes password of a user, returns -1 if user doesnt exist</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/{<span style=\"color: #339966;\">name</span>}/bal (PATCH)</h2> <p><span style=\"background-color: #808080;\"> name </span> - the name of the user being set</p> <p><span style=\"background-color: #808080;\"> attempt </span> - the admin password required</p> <p><span style=\"background-color: #808080;\"> amount </span> - the new balance of the user</p> <blockquote> <p>Sets the balance of a user</p> </blockquote> <h2>/BankF/help (GET)</h2> <blockquote> <p>the page you're looking at right now!</p> </blockquote> <h2>/BankF/vpass (POST)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being verified</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password being verified</p> <blockquote> <p>returns 0 or 1 based on if [attempt] is equal to the password of the user [name], or -1 if user does not exist. The intended usage for this function is for connected services</p> </blockquote> <h2>/BankF/contains/{<span style=\"color: #339966;\">name</span>} (GET)</h2> <blockquote> <p>returns a 0 or 1 based on if the bank contains the user</p> </blockquote> <h2>/BankF/{<span style=\"color: #339966;\">name</span>}/bal (GET)</h2> <blockquote> <p>returns the balance of a given user's name, if -1 that means the user does not exist</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/vpass (POST)</h2><p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Verifies if password entered is admin password</p> </blockquote><h2>/BankF/user (DELETE)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being deleted</p> <p><span style=\"background-color: #808080;\"> attempt </span> - password of user being deleted</p> <blockquote> <p>Deletes a user with the password of the user as verification</p> </blockquote> <h2>/BankF/<span style=\"color: #993300;\">admin</span>/user (DELETE)</h2> <p><span style=\"background-color: #808080;\"> name </span> - name of user being deleted</p> <p><span style=\"background-color: #808080;\"> attempt </span> - admin password</p> <blockquote> <p>Deletes a user with admin password as verification</p> </blockquote> </body>");
|
||||||
resp->setExpiredTime(0);
|
resp->setExpiredTime(0);
|
||||||
callback(resp);
|
callback(resp);
|
||||||
}
|
}
|
||||||
|
|
@ -106,10 +106,6 @@ public:
|
||||||
GEN_BODY
|
GEN_BODY
|
||||||
JSON(bank.SetBal(name, body["attempt"].asCString(), body["amount"].asUInt()));
|
JSON(bank.SetBal(name, body["attempt"].asCString(), body["amount"].asUInt()));
|
||||||
}
|
}
|
||||||
void AllUsers(req_args)
|
|
||||||
{
|
|
||||||
JSON(bank.AllUsers());
|
|
||||||
}
|
|
||||||
void AdminVerifyPass(req_args)
|
void AdminVerifyPass(req_args)
|
||||||
{
|
{
|
||||||
GEN_BODY
|
GEN_BODY
|
||||||
|
|
@ -129,7 +125,6 @@ public:
|
||||||
METHOD_ADD(BankF::VerifyPassword, "/vpass", Post, Options);
|
METHOD_ADD(BankF::VerifyPassword, "/vpass", Post, Options);
|
||||||
METHOD_ADD(BankF::Contains, "/contains/{name}", Get, Options);
|
METHOD_ADD(BankF::Contains, "/contains/{name}", Get, Options);
|
||||||
METHOD_ADD(BankF::GetBal, "/{name}/bal", Get, Options);
|
METHOD_ADD(BankF::GetBal, "/{name}/bal", Get, Options);
|
||||||
METHOD_ADD(BankF::AllUsers, "/allusers", Get, Options);
|
|
||||||
METHOD_ADD(BankF::AdminVerifyPass, "/admin/vpass", Post, Options);
|
METHOD_ADD(BankF::AdminVerifyPass, "/admin/vpass", Post, Options);
|
||||||
|
|
||||||
METHOD_ADD(BankF::DelUser, "/user", Delete, Options);
|
METHOD_ADD(BankF::DelUser, "/user", Delete, Options);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue