From d9b47480e9a207e05f0d32e9456e47c83c13c9c0 Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Tue, 13 Apr 2021 13:50:06 -0700 Subject: [PATCH] :sparkles: Admin Verify Pass --- include/bank.hpp | 4 ++++ include/bank_f.hpp | 6 ++++++ include/user.hpp | 6 ++++-- main.cpp | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/bank.hpp b/include/bank.hpp index 2d54ffa..ffe5286 100644 --- a/include/bank.hpp +++ b/include/bank.hpp @@ -113,6 +113,10 @@ public: } return state; } + bool AdminVerifyPass(const std::string &attempt) + { + return admin_pass == attempt; + } int_fast64_t GetBal(const std::string &name) const { diff --git a/include/bank_f.hpp b/include/bank_f.hpp index cfded9a..b8fa3c8 100644 --- a/include/bank_f.hpp +++ b/include/bank_f.hpp @@ -110,6 +110,11 @@ public: { JSON(bank.AllUsers()); } + void AdminVerifyPass(req_args) + { + GEN_BODY + JSON(bank.AdminVerifyPass(body["attempt"].asCString())); + } METHOD_LIST_BEGIN METHOD_ADD(BankF::Close, "/admin/close", Post, Options); @@ -125,6 +130,7 @@ public: METHOD_ADD(BankF::Contains, "/contains/{name}", Get, Options); METHOD_ADD(BankF::GetBal, "/{name}/bal", Get, Options); METHOD_ADD(BankF::AllUsers, "/allusers", Get, Options); + METHOD_ADD(BankF::AdminVerifyPass, "/admin/vpass", Get, Options); METHOD_ADD(BankF::DelUser, "/user", Delete, Options); METHOD_ADD(BankF::AdminDelUser, "/admin/user", Delete, Options); diff --git a/include/user.hpp b/include/user.hpp index 8159df5..367b9cf 100644 --- a/include/user.hpp +++ b/include/user.hpp @@ -6,6 +6,7 @@ struct User { uint_fast32_t balance = 0; uint64_t password; + bool is_admin = false; /** * @brief User constructor @@ -20,14 +21,15 @@ struct User * @param init_bal initial balance * @param init_pass initial password */ - User(uint_fast32_t init_bal, std::string &&init_pass) : balance(init_bal), password(XXH64(init_pass.data(), init_pass.size(), 1)) {} - User(uint_fast32_t init_bal, uint64_t init_pass) : balance(init_bal), password(init_pass) {} + User(uint_fast32_t init_bal, std::string &&init_pass, bool state = false) : balance(init_bal), password(XXH64(init_pass.data(), init_pass.size(), 1)), is_admin(state) {} + User(uint_fast32_t init_bal, uint64_t init_pass, bool state = false) : balance(init_bal), password(init_pass), is_admin(state) {} Json::Value Serialize() const { Json::Value res; res["balance"] = (Json::UInt)balance; res["password"] = (Json::UInt64)password; + res["is_admin"] = is_admin; return res; } }; \ No newline at end of file diff --git a/main.cpp b/main.cpp index 60f994c..77df02c 100644 --- a/main.cpp +++ b/main.cpp @@ -44,7 +44,7 @@ int main(int argc, char **argv) [](const drogon::HttpRequestPtr &req, const drogon::HttpResponsePtr &resp) { resp->addHeader("Access-Control-Allow-Origin", "*"); }); - app().loadConfigFile("../config.json").registerController(API).setThreadNum(std::stoul(argv[3])).enableRunAsDaemon().run(); + app().loadConfigFile("../config.json").addListener("0.0.0.0", 80).registerController(API).setThreadNum(std::stoul(argv[3])).enableRunAsDaemon().run(); return 0; } \ No newline at end of file