diff --git a/src/auth/auth.cpp b/src/auth/auth.cpp index 71c1e93..fe37f92 100644 --- a/src/auth/auth.cpp +++ b/src/auth/auth.cpp @@ -4,6 +4,7 @@ #include #include #include +#include // function for authorization users void auth(const httplib::Request &request, httplib::Response &response) { @@ -35,7 +36,7 @@ void auth(const httplib::Request &request, httplib::Response &response) { std::string userid; for (nlohmann::basic_json<> user: all_users) { - if ((user["username"] == request_username) && (user["password"] == request_password)) { + if ((user["username"] == request_username) && (user["password"] == hashPassword(request_password))) { userid = user["id"]; break; } diff --git a/src/security/HashPassword.hpp b/src/security/HashPassword.hpp new file mode 100644 index 0000000..c520d68 --- /dev/null +++ b/src/security/HashPassword.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include +#include +#include + +// funcion for hashing password using sha256 +std::string hashPassword(const std::string &password) { + unsigned char hash[SHA256_DIGEST_LENGTH]; + + // calculating hash + SHA256(reinterpret_cast(password.c_str()), password.size(), hash); + + // reinterpreter as hex string + std::stringstream ss; + for (int i = 0; i < SHA256_DIGEST_LENGTH; ++i) { + ss << std::setw(2) << std::setfill('0') << std::hex << static_cast(hash[i]); + } + + return ss.str(); +} diff --git a/users.json b/users.json index 231d0b3..18c81ee 100644 --- a/users.json +++ b/users.json @@ -3,7 +3,7 @@ "id": "0", "username": "tola", "email": "mail@example.com", - "password": "2808", + "password": "e0c7bfa5b8e4ae0cecfc1f14093a71e05c27abd93a3850fc35f008c3baf866b4", "group": "root", "is_superuser": "1" }