From ba3099dc6dd387ccb8b852535ce4bd021c004919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 27 Sep 2025 12:06:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=87=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0=20=D1=81=20=D1=82=D1=80?= =?UTF-8?q?=D0=B5=D1=82=D1=8C=D0=B5=D0=B9=20=D1=80=D1=83=D1=87=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/endpoints_handlers/AuthLogoutExecutor.h | 37 +++++---------------- src/endpoints_handlers/RootExecutor.h | 2 +- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/endpoints_handlers/AuthLogoutExecutor.h b/src/endpoints_handlers/AuthLogoutExecutor.h index 1c6b833..dd48cc4 100644 --- a/src/endpoints_handlers/AuthLogoutExecutor.h +++ b/src/endpoints_handlers/AuthLogoutExecutor.h @@ -17,14 +17,12 @@ template class AuthLogoutExecutor : public IExecutor { mysqlx::Session& session_; - const std::shared_ptr& user_dao_; const std::shared_ptr& auth_dao_; public: AuthLogoutExecutor(mysqlx::Session& session, - const std::shared_ptr& user_dao, const std::shared_ptr& auth_dao) - : session_(session), user_dao_(user_dao), auth_dao_(auth_dao) + : session_(session), auth_dao_(auth_dao) { } @@ -39,49 +37,32 @@ public: auto body = req.body(); value req_json; - value response_body; + value response_body; response_body.emplace_object(); try { req_json = json::parse(body); - const std::string login = req_json.as_object().at("login").as_string().c_str(); - const std::string password = req_json.as_object().at("password").as_string().c_str(); + const std::string token = req_json.as_object().at("token").as_string().c_str(); - if (login.empty() || password.empty()) + if (!auth_dao_->Logout(token)) { - http::response res{http::status::unprocessable_entity, req.version()}; - response_body.as_object().emplace("Result", "Login or password are empty"); + http::response res{http::status::bad_request, req.version()}; - res.body() = serialize(response_body); + response_body.as_object().emplace("Result", "token is not authorized"); + + res.body() = json::serialize(response_body); res.set(http::field::content_type, "application/json"); res.content_length(res.body().size()); return res; } - std::optional maybe_user = user_dao_->GetByLogin(login); - - if (!maybe_user.has_value() || (maybe_user.value().GetHashedPassword() != HashPassword(password))) - { - http::response res{http::status::unprocessable_entity, req.version()}; - response_body.as_object().emplace("Result", "Incorrect login or password"); - - res.body() = serialize(response_body); - res.set(http::field::content_type, "application/json"); - res.content_length(res.body().size()); - - return res; - } - auto token = GenerateUUID(); - auth_dao_->Login(maybe_user.value().GetUUID(), token); - http::response res{http::status::ok, req.version()}; - response_body.as_object().emplace("token", token); - res.body() = serialize(response_body); + res.body() = "true"s; res.set(http::field::content_type, "application/json"); res.content_length(res.body().size()); diff --git a/src/endpoints_handlers/RootExecutor.h b/src/endpoints_handlers/RootExecutor.h index 3efdc3d..8fb76fa 100644 --- a/src/endpoints_handlers/RootExecutor.h +++ b/src/endpoints_handlers/RootExecutor.h @@ -60,7 +60,7 @@ public: routes_pathes_["/api/v1/Auth/Logout"] = std::make_unique( typename RouteController::HTTPMethodsToExecutors{ {boost::beast::http::verb::post, - std::make_shared(session_, user_dao_, auth_dao_)} + std::make_shared(session_, auth_dao_)} } ); }