From 803aeb11c3a85bb05e0825aacd9e03b1c833a93f Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Wed, 9 Jun 2021 20:44:44 -0700 Subject: [PATCH] implementing password in header --- include/bank.hpp | 3 ++- include/bank_f.hpp | 33 +++++++++++++++++---------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/include/bank.hpp b/include/bank.hpp index f1a2f10..97a1cbe 100644 --- a/include/bank.hpp +++ b/include/bank.hpp @@ -286,12 +286,13 @@ public: if (!temp.isNull()) { writer->write(temp, &user_save); + user_save.close(); } else { + user_save.close(); throw std::invalid_argument("Saving Failed\n"); } - user_save.close(); } //NOT THREAD SAFE, BY NO MEANS SHOULD THIS BE CALLED WHILE RECEIEVING REQUESTS diff --git a/include/bank_f.hpp b/include/bank_f.hpp index f93979a..05cd00d 100644 --- a/include/bank_f.hpp +++ b/include/bank_f.hpp @@ -10,6 +10,7 @@ using namespace drogon; #define GEN_BODY \ const auto temp_req = req->getJsonObject(); \ const auto body = temp_req ? *temp_req : Json::Value(); +#define PASS_HEADER std::string pass = req->getHeader("Password"); template INLINE Json::Value JsonReturn(T &&val) @@ -43,9 +44,9 @@ public: } void Close(req_args) const { - GEN_BODY + PASS_HEADER bool res; - if (body["attempt"].asCString() == bank.admin_pass) + if (pass == bank.admin_pass) { bank.Save(); @@ -58,35 +59,35 @@ public: } JSON(res); } - void AddUser(req_args) const + void AddUser(req_args, std::string &&name) const { - GEN_BODY - JSON(bank.AddUser(body["name"].asCString(), body["init_pass"].asCString())); + PASS_HEADER + JSON(bank.AddUser(std::move(name), std::move(pass))); } - void AdminAddUser(req_args) const + void AdminAddUser(req_args, std::string &&name, uint32_t init_bal, std::string &&init_pass) const { - GEN_BODY - JSON(bank.AdminAddUser(body["attempt"].asCString(), body["name"].asCString(), body["init_bal"].asUInt(), body["init_pass"].asCString())); + PASS_HEADER + JSON(bank.AdminAddUser(pass, std::move(name), init_bal, std::move(init_pass))); } void DelUser(req_args, const std::string &name) const { - GEN_BODY - JSON(bank.DelUser(name, body["attempt"].asCString())); + PASS_HEADER + JSON(bank.DelUser(name, pass)); } void AdminDelUser(req_args, const std::string &name) const { - GEN_BODY - JSON(bank.AdminDelUser(name, body["attempt"].asCString())); + PASS_HEADER + JSON(bank.AdminDelUser(name, pass)); } void SendFunds(req_args, const std::string name, const std::string to, uint32_t amount) const { - GEN_BODY - JSON(bank.SendFunds(name, to, amount, body["attempt"].asCString())); + PASS_HEADER + JSON(bank.SendFunds(name, to, amount, pass)); } void ChangePassword(req_args, const std::string &name) const { - GEN_BODY - JSON(bank.ChangePassword(name, body["attempt"].asCString(), body["new_pass"].asCString())); + PASS_HEADER + JSON(bank.ChangePassword(name, pass, std::string(req->getBody()))); } void Contains(req_args, const std::string &name) const {