diff --git a/src/signal_server.cpp b/src/signal_server.cpp index e4bc8ec..1e5b7fb 100644 --- a/src/signal_server.cpp +++ b/src/signal_server.cpp @@ -198,7 +198,9 @@ void SignalServer::on_message(websocketpp::connection_hdl hdl, std::string transmission_id = j["transmission_id"].get(); std::string password = j["password"].get(); - if (transmission_manager_.CheckPassword(password, transmission_id)) { + int ret = transmission_manager_.CheckPassword(password, transmission_id); + + if (0 == ret) { std::vector user_id_list = transmission_manager_.GetAllUserIdOfTransmission(transmission_id); @@ -208,7 +210,7 @@ void SignalServer::on_message(websocketpp::connection_hdl hdl, {"status", "success"}}; send_msg(hdl, message); - } else { + } else if (-1 == ret) { std::vector user_id_list; json message = {{"type", "user_id_list"}, {"transmission_id", transmission_id}, @@ -221,6 +223,20 @@ void SignalServer::on_message(websocketpp::connection_hdl hdl, // password, transmission_id, // transmission_manager_.GetPassword(transmission_id)); + send_msg(hdl, message); + } else if (-2 == ret) { + std::vector user_id_list; + json message = {{"type", "user_id_list"}, + {"transmission_id", transmission_id}, + {"user_id_list", user_id_list}, + {"status", "failed"}, + {"reason", "No such transmission id"}}; + // LOG_INFO( + // "Incorrect password [{}] for transmission [{}] with password is " + // "[{}]", + // password, transmission_id, + // transmission_manager_.GetPassword(transmission_id)); + send_msg(hdl, message); } diff --git a/src/transmission_manager.cpp b/src/transmission_manager.cpp index deb8580..2bf7329 100644 --- a/src/transmission_manager.cpp +++ b/src/transmission_manager.cpp @@ -145,15 +145,15 @@ std::string TransmissionManager::GetUserId(websocketpp::connection_hdl hdl) { return ""; } -bool TransmissionManager::CheckPassword(const std::string& password, - const std::string& transmission_id) { +int TransmissionManager::CheckPassword(const std::string& password, + const std::string& transmission_id) { if (transmission_password_list_.find(transmission_id) == transmission_password_list_.end()) { LOG_ERROR("No transmission with id [{}]", transmission_id); - return false; + return -2; } - return transmission_password_list_[transmission_id] == password; + return transmission_password_list_[transmission_id] == password ? 0 : -1; } std::string TransmissionManager::GetPassword( diff --git a/src/transmission_manager.h b/src/transmission_manager.h index 499e4ff..edff5bb 100644 --- a/src/transmission_manager.h +++ b/src/transmission_manager.h @@ -28,8 +28,8 @@ class TransmissionManager { websocketpp::connection_hdl GetWsHandle(const std::string& user_id); std::string GetUserId(websocketpp::connection_hdl hdl); - bool CheckPassword(const std::string& password, - const std::string& transmission_id); + int CheckPassword(const std::string& password, + const std::string& transmission_id); std::string GetPassword(const std::string& transmission_id); private: