From fb961af71c07f95a38bed13163f3ecda5a1576c0 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Wed, 3 Jul 2024 10:49:56 +0700 Subject: [PATCH] added syslog errors --- src/auth/auth.cpp | 6 ++++++ src/auth/verify_auth.cpp | 2 ++ src/users/access_request.cpp | 5 +++++ src/users/add_user.cpp | 9 +++++++++ src/users/change_password.cpp | 12 ++++++++++++ src/users/change_user.cpp | 11 +++++++++++ src/users/delete_user.cpp | 7 +++++++ src/users/get_all_users.cpp | 7 +++++++ src/users/get_user.cpp | 6 ++++++ 9 files changed, 65 insertions(+) diff --git a/src/auth/auth.cpp b/src/auth/auth.cpp index 0ea9703..195db54 100644 --- a/src/auth/auth.cpp +++ b/src/auth/auth.cpp @@ -2,6 +2,7 @@ #include "../colors.h" #include "../includes.hpp" #include +#include // function for authorization users void auth(const httplib::Request &request, httplib::Response &response) { @@ -9,16 +10,19 @@ void auth(const httplib::Request &request, httplib::Response &response) { response.set_header("Access-Control-Allow-Origin", "*"); if (request.body.empty()) { response.set_content(AUTH_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no body in auth request"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); if (json_body["username"] == nullptr) { response.set_content(AUTH_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no username in auth request"); return; } if (json_body["password"] == nullptr) { response.set_content(AUTH_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no password in auth request"); return; } const std::string request_username = json_body["username"]; @@ -37,6 +41,7 @@ void auth(const httplib::Request &request, httplib::Response &response) { } if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "auth request rejected"); return; } @@ -48,5 +53,6 @@ void auth(const httplib::Request &request, httplib::Response &response) { std::stringstream response_json; response_json << R"({"token":")" << token << "\"}"; + syslog(LOG_INFO, "auth request success"); response.set_content(response_json.str(), JSON_TYPE); } diff --git a/src/auth/verify_auth.cpp b/src/auth/verify_auth.cpp index e01b6b3..ae60378 100644 --- a/src/auth/verify_auth.cpp +++ b/src/auth/verify_auth.cpp @@ -1,6 +1,7 @@ #include "auth.hpp" #include #include "../includes.hpp" +#include // function for verify tokens bool verify_auth(const std::string &token) { @@ -17,6 +18,7 @@ bool verify_auth(const std::string &token) { return true; } catch (const std::system_error &e) { std::cout << "Verification error: " << e.what() << std::endl; + syslog(LOG_ERR, "token verification error"); return false; } catch (...) { diff --git a/src/users/access_request.cpp b/src/users/access_request.cpp index d0adf5c..65d44aa 100644 --- a/src/users/access_request.cpp +++ b/src/users/access_request.cpp @@ -2,6 +2,7 @@ #include "../colors.h" #include "../includes.hpp" #include "../auth/auth.hpp" +#include // function for access or reject authorization void user_access(const httplib::Request &request, httplib::Response &response) { @@ -9,17 +10,21 @@ void user_access(const httplib::Request &request, httplib::Response &response) { response.set_header("Access-Control-Allow-Origin", "*"); if (request.body.empty()) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "access request body is emty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); if (json_body["token"] == nullptr) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no token in acces request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(R"({"access":"reject"})", JSON_TYPE); + syslog(LOG_ERR, "access rejected"); return; } response.set_content(R"({"access":"success"})", JSON_TYPE); + syslog(LOG_INFO, "access success"); } diff --git a/src/users/add_user.cpp b/src/users/add_user.cpp index e24feed..a1f82a7 100644 --- a/src/users/add_user.cpp +++ b/src/users/add_user.cpp @@ -24,6 +24,7 @@ void add_user(const httplib::Request &request, httplib::Response &response) { if (request.body.empty()) { response.set_content(ADD_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "add user request body is empty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); @@ -31,20 +32,24 @@ void add_user(const httplib::Request &request, httplib::Response &response) { if (json_body["token"] == nullptr) { response.set_content(ADD_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no token in add user request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in add user request"); return; } if (json_body["username"] == nullptr) { response.set_content(ADD_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no username in add user request"); return; } if (json_body["password"] == nullptr) { response.set_content(ADD_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no password in add user request"); return; } @@ -52,6 +57,7 @@ void add_user(const httplib::Request &request, httplib::Response &response) { std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in add user request"); return; } @@ -67,10 +73,12 @@ void add_user(const httplib::Request &request, httplib::Response &response) { } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in add user request"); return; } if (response_user_data["is_superuser"] != "1") { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in add user request"); return; } @@ -80,6 +88,7 @@ void add_user(const httplib::Request &request, httplib::Response &response) { for (nlohmann::json user: all_users) { if ((user["username"] == username)) { response.set_content(R"({"status":"user already exists"})", JSON_TYPE); + syslog(LOG_ERR, "user already exists in add user request"); return; } } diff --git a/src/users/change_password.cpp b/src/users/change_password.cpp index 40ee6ee..cd5833b 100644 --- a/src/users/change_password.cpp +++ b/src/users/change_password.cpp @@ -14,6 +14,7 @@ void change_password(const httplib::Request &request, httplib::Response &respons CHANGE_PASSWORD_REQUIRED_STRING, JSON_TYPE ); + syslog(LOG_ERR, "body is empty in change password request"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); @@ -23,21 +24,25 @@ void change_password(const httplib::Request &request, httplib::Response &respons CHANGE_PASSWORD_REQUIRED_STRING, JSON_TYPE ); + syslog(LOG_ERR, "no token in change password request"); return; } if ((json_body["userid"] == nullptr) && (json_body["old_password"] == nullptr)) { response.set_content( CHANGE_PASSWORD_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no old password is change password request"); return; } if (json_body["new_password"] == nullptr) { response.set_content(CHANGE_PASSWORD_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no new password in change password request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change password request"); return; } @@ -50,6 +55,7 @@ void change_password(const httplib::Request &request, httplib::Response &respons std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change password request"); return; } @@ -68,10 +74,12 @@ void change_password(const httplib::Request &request, httplib::Response &respons } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change password request"); return; } if (response_user_data["is_superuser"] != "1") { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change password request"); return; } } @@ -93,12 +101,16 @@ void change_password(const httplib::Request &request, httplib::Response &respons if ((all_user["id"] == changepassuserid) && (all_user["password"] == old_password)) { all_user["password"] = new_password; found = true; + std::stringstream syslogstring; + syslogstring << "password changed for user [" << all_user["username"] << "]"; + syslog(LOG_INFO, syslogstring.str().c_str()); break; } } } if (!found) { response.set_content(R"({"status":"can't find this user"})", JSON_TYPE); + syslog(LOG_ERR, "can't find this user in change password request"); return; } std::ofstream usersfilew("users.json"); diff --git a/src/users/change_user.cpp b/src/users/change_user.cpp index bd47d51..4f06ad6 100644 --- a/src/users/change_user.cpp +++ b/src/users/change_user.cpp @@ -13,6 +13,7 @@ void change_user(const httplib::Request &request, httplib::Response &response) { response.set_content( CHANGE_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "change user request body is empty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); @@ -22,16 +23,19 @@ void change_user(const httplib::Request &request, httplib::Response &response) { CHANGE_USER_REQUIRED_STRING, JSON_TYPE ); + syslog(LOG_ERR, "no token in change user request"); return; } if ((json_body["userid"] == nullptr) && (json_body["old_password"] == nullptr)) { response.set_content( CHANGE_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no old_password in change user request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change user request"); return; } @@ -39,6 +43,7 @@ void change_user(const httplib::Request &request, httplib::Response &response) { std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change user request"); return; } @@ -57,10 +62,12 @@ void change_user(const httplib::Request &request, httplib::Response &response) { } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change user request"); return; } if (response_user_data["is_superuser"] != "1") { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in change user request"); return; } } @@ -85,12 +92,16 @@ void change_user(const httplib::Request &request, httplib::Response &response) { if ((all_user["id"] == changeusruserid)) { if (json_body["username"] != nullptr) { all_user["username"] = json_body["username"]; } found = true; + std::stringstream syslogstring; + syslogstring << "userdata changed for user [" << all_user["username"] << "]"; + syslog(LOG_INFO, syslogstring.str().c_str()); break; } } } if (!found) { response.set_content(R"({"status":"can't find this user"})", JSON_TYPE); + syslog(LOG_ERR, "can't find this user in change user request"); return; } std::ofstream usersfilew("users.json"); diff --git a/src/users/delete_user.cpp b/src/users/delete_user.cpp index 2fc39ae..996898e 100644 --- a/src/users/delete_user.cpp +++ b/src/users/delete_user.cpp @@ -13,6 +13,7 @@ void delete_user(const httplib::Request &request, httplib::Response &response) { response.set_content( DELETE_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "delete user request body is empty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); @@ -21,10 +22,12 @@ void delete_user(const httplib::Request &request, httplib::Response &response) { response.set_content( DELETE_USER_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no token in delete user request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in delete user request"); return; } @@ -32,6 +35,7 @@ void delete_user(const httplib::Request &request, httplib::Response &response) { std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in delete user request"); return; } @@ -50,10 +54,12 @@ void delete_user(const httplib::Request &request, httplib::Response &response) { } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in delete user request"); return; } if (response_user_data["is_superuser"] != "1") { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in delete user request"); return; } } @@ -71,6 +77,7 @@ void delete_user(const httplib::Request &request, httplib::Response &response) { } if (!found) { response.set_content(R"({"status":"can't find this user"})", JSON_TYPE); + syslog(LOG_ERR, "can't find this user in delete user request"); return; } std::ofstream usersfilew("users.json"); diff --git a/src/users/get_all_users.cpp b/src/users/get_all_users.cpp index ce8c761..d9b4fc8 100644 --- a/src/users/get_all_users.cpp +++ b/src/users/get_all_users.cpp @@ -3,6 +3,7 @@ #include "../includes.hpp" #include "../auth/auth.hpp" #include +#include // function for get all users data without password void get_all_users(const httplib::Request &request, httplib::Response &response) { @@ -10,22 +11,26 @@ void get_all_users(const httplib::Request &request, httplib::Response &response) response.set_header("Access-Control-Allow-Origin", "*"); if (request.body.empty()) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "get all users request body is empty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); if (json_body["token"] == nullptr) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no token in get all users"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get all user request"); return; } jwt::decoded_jwt decoded_token = jwt::decode(json_body["token"]); std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get all user request"); return; } std::ifstream usersfile("users.json"); @@ -40,10 +45,12 @@ void get_all_users(const httplib::Request &request, httplib::Response &response) } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get all user request"); return; } if (response_user_data["is_superuser"] != "1") { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get all user request"); return; } response.set_content(all_users.dump(), JSON_TYPE); diff --git a/src/users/get_user.cpp b/src/users/get_user.cpp index eae0359..9a6ded6 100644 --- a/src/users/get_user.cpp +++ b/src/users/get_user.cpp @@ -3,6 +3,7 @@ #include "../includes.hpp" #include "../auth/auth.hpp" #include +#include // function for get user data without password void get_user(const httplib::Request &request, httplib::Response &response) { @@ -10,22 +11,26 @@ void get_user(const httplib::Request &request, httplib::Response &response) { response.set_header("Access-Control-Allow-Origin", "*"); if (request.body.empty()) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "get user request body is empty"); return; } nlohmann::json json_body = nlohmann::json::parse(request.body); if (json_body["token"] == nullptr) { response.set_content(ACCESS_REQUIRED_STRING, JSON_TYPE); + syslog(LOG_ERR, "no token in get user request"); return; } if (!verify_auth(json_body["token"])) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get user request"); return; } jwt::decoded_jwt decoded_token = jwt::decode(json_body["token"]); std::string userid = decoded_token.get_payload_json()["userId"].to_str(); if (userid.empty()) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get user request"); return; } std::ifstream usersfile("users.json"); @@ -40,6 +45,7 @@ void get_user(const httplib::Request &request, httplib::Response &response) { } if (response_user_data == nullptr) { response.set_content(STRING403, JSON_TYPE); + syslog(LOG_ERR, "access reject in get user request"); return; } response_user_data.erase("password");