From 4b969003dc71c89b0308cf9822c7534d56bc7e1e Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Mon, 26 Apr 2021 18:45:45 -0700 Subject: [PATCH] :sparkles: Limited Usernames to 50 chars, expanded log size to 50 --- include/bank.hpp | 8 ++++++++ include/bank_f.hpp | 2 +- include/log.hpp | 2 +- include/transactions.hpp | 13 ------------- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/include/bank.hpp b/include/bank.hpp index 3861bfe..4eee9ed 100644 --- a/include/bank.hpp +++ b/include/bank.hpp @@ -34,12 +34,20 @@ public: bool AddUser(const std::string &name, std::string &&init_pass) { + if (name.size() > 50) + { + return false; + } std::shared_lock lock{size_l}; return users.try_emplace_l( name, [](User &) {}, std::move(init_pass)); } bool AdminAddUser(const std::string &attempt, std::string &&name, uint_fast32_t init_bal, std::string &&init_pass) { + if (name.size() > 50) + { + return false; + } bool state = (admin_pass == attempt); if (state) { diff --git a/include/bank_f.hpp b/include/bank_f.hpp index 1c29cc9..8bb2d94 100644 --- a/include/bank_f.hpp +++ b/include/bank_f.hpp @@ -37,7 +37,7 @@ public: { auto resp = HttpResponse::newHttpResponse(); auto handlerInfo = app().getHandlersInfo(); - resp->setBody("

ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE

/BankF/admin/close (POST)

 attempt  - admin password

Closes and Saves the server.

/BankF/user (POST)

 name  - name of the user being added

 init_pass  - initial password for the user being added

Adds a user to the bank

/BankF/admin/user (POST)

 name  - name of the user being added

 attempt  - admin password required to add user with balance

 init_bal  - initial balance for user being added

 init_pass  - initial password for user being added

Adds a user with initial balance

/BankF/sendfunds (POST)

 a_name  - sender's name

 b_name  - reciever's name

 amount  - amount being sent

 attempt  - password of sender

Sends money from one user to another

/BankF/changepass (PATCH)

 name  - name of user's password being changes

 attempt  - password of user being changed

 new_pass  - new password to replace the current user's password

Changes password of a user, returns -1 if user doesnt exist

/BankF/admin/{name}/bal (PATCH)

 name  - the name of the user being set

 attempt  - the admin password required

 amount  - the new balance of the user

Sets the balance of a user

/BankF/help (GET)

the page you're looking at right now!

/BankF/vpass (POST)

 name  - name of user being verified

 attempt  - password being verified

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

/BankF/contains/{name} (GET)

returns a 0 or 1 based on if the bank contains the user

/BankF/{name}/bal (GET)

returns the balance of a given user's name, if -1 that means the user does not exist

/BankF/admin/vpass (POST)

 attempt  - admin password

Verifies if password entered is admin password

/BankF/{name}/log (POST)

 attempt  - user password

returns a list of last 100 transactions, -1 if user not found, 0 if invalid password

/BankF/user (DELETE)

 name  - name of user being deleted

 attempt  - password of user being deleted

Deletes a user with the password of the user as verification

/BankF/admin/user (DELETE)

 name  - name of user being deleted

 attempt  - admin password

Deletes a user with admin password as verification

"); + resp->setBody("

ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE

/BankF/admin/close (POST)

 attempt  - admin password

Closes and Saves the server.

/BankF/user (POST)

 name  - name of the user being added (must be less then 50 characters)

 init_pass  - initial password for the user being added

Adds a user to the bank

/BankF/admin/user (POST)

 name  - name of the user being added

 attempt  - admin password required to add user with balance

 init_bal  - initial balance for user being added

 init_pass  - initial password for user being added

Adds a user with initial balance

/BankF/sendfunds (POST)

 a_name  - sender's name

 b_name  - reciever's name

 amount  - amount being sent

 attempt  - password of sender

Sends money from one user to another

/BankF/changepass (PATCH)

 name  - name of user's password being changes

 attempt  - password of user being changed

 new_pass  - new password to replace the current user's password

Changes password of a user, returns -1 if user doesnt exist

/BankF/admin/{name}/bal (PATCH)

 name  - the name of the user being set

 attempt  - the admin password required

 amount  - the new balance of the user

Sets the balance of a user

/BankF/help (GET)

the page you're looking at right now!

/BankF/vpass (POST)

 name  - name of user being verified

 attempt  - password being verified

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

/BankF/contains/{name} (GET)

returns a 0 or 1 based on if the bank contains the user

/BankF/{name}/bal (GET)

returns the balance of a given user's name, if -1 that means the user does not exist

/BankF/admin/vpass (POST)

 attempt  - admin password

Verifies if password entered is admin password

/BankF/{name}/log (POST)

 attempt  - user password

returns a list of last 100 transactions, -1 if user not found, 0 if invalid password

/BankF/user (DELETE)

 name  - name of user being deleted

 attempt  - password of user being deleted

Deletes a user with the password of the user as verification

/BankF/admin/user (DELETE)

 name  - name of user being deleted

 attempt  - admin password

Deletes a user with admin password as verification

"); resp->setExpiredTime(0); callback(resp); } diff --git a/include/log.hpp b/include/log.hpp index 6c3e3d8..e129078 100644 --- a/include/log.hpp +++ b/include/log.hpp @@ -10,7 +10,7 @@ struct Log { if (!data.size()) { - data.resize(25); + data.resize(50); } for (size_t i = 1; i < data.size(); ++i) { diff --git a/include/transactions.hpp b/include/transactions.hpp index b56648e..fe519f9 100644 --- a/include/transactions.hpp +++ b/include/transactions.hpp @@ -10,23 +10,10 @@ struct Transaction uint32_t amount = 0; uint64_t time = 0; - void Concatinate(std::string &s) - { - if (s.size() > 10) - { - s.resize(10); - s[7] = '.'; - s[8] = '.'; - s[9] = '.'; - } - } - Transaction() = default; Transaction(std::string from_str, std::string to_str, uint32_t amount) : amount(amount) { using namespace std::chrono; - Concatinate(from_str); - Concatinate(to_str); from = std::move(from_str); to = std::move(to_str); time = duration_cast(system_clock::now().time_since_epoch()).count();