From 65fc484fa4144e8c6601d933fe02d6992cda83a9 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sat, 14 Sep 2024 19:31:21 -0500 Subject: [PATCH] fix --- .../librepertory/src/rpc/server/server.cpp | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/repertory/librepertory/src/rpc/server/server.cpp b/repertory/librepertory/src/rpc/server/server.cpp index 59223175..98cce48a 100644 --- a/repertory/librepertory/src/rpc/server/server.cpp +++ b/repertory/librepertory/src/rpc/server/server.cpp @@ -39,30 +39,37 @@ auto server::check_authorization(const httplib::Request &req) -> bool { return false; } - const auto authorization = req.get_header_value("Authorization"); + auto authorization = req.get_header_value("Authorization"); if (authorization.empty()) { + utils::error::raise_error(function_name, "Authorization header is not set"); return false; } - const auto auth_parts = utils::string::split(authorization, ' ', true); + auto auth_parts = utils::string::split(authorization, ' ', true); if (auth_parts.empty()) { + utils::error::raise_error(function_name, "Authorization header is empty"); return false; } - const auto auth_type = auth_parts[0U]; + auto auth_type = auth_parts[0U]; if (auth_type != "Basic") { + utils::error::raise_error(function_name, "Authorization is not Basic"); return false; } - const auto data = macaron::Base64::Decode(authorization.substr(6U)); - const auto auth = - utils::string::split(std::string(data.begin(), data.end()), ':', true); - if (auth.size() != 2U) { + auto data = macaron::Base64::Decode(authorization.substr(6U)); + auto auth_str = std::string(data.begin(), data.end()); + + auto auth = utils::string::split(auth_str, ':', true); + if (auth.size() < 2U) { + utils::error::raise_error(function_name, "Authorization is not valid"); return false; } - const auto &user = auth[0U]; - const auto &pwd = auth[1U]; + auto user = auth.at(0U); + auth.erase(auth.begin()); + + auto pwd = utils::string::join(auth, ':'); return (user == config_.get_api_user()) && (pwd == config_.get_api_auth()); }