diff --git a/src/cpp/JSONInterface/JsonTransaction.cpp b/src/cpp/JSONInterface/JsonTransaction.cpp index 9e0d0aff9..53722423f 100644 --- a/src/cpp/JSONInterface/JsonTransaction.cpp +++ b/src/cpp/JSONInterface/JsonTransaction.cpp @@ -31,6 +31,7 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params) } int balance = 0; + if (!paramJsonObject->isNull("balance")) { paramJsonObject->get("balance").convert(balance); if (balance) { @@ -47,11 +48,16 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params) std::string transactionBase64String; Poco::Dynamic::Var transaction_base64 = paramJsonObject->get("transaction_base64"); + bool auto_sign = false; + auto auto_sign_json = paramJsonObject->get("auto_sign"); + if (!auto_sign_json.isEmpty()) { + auto_sign_json.convert(auto_sign); + } if (transaction_base64.isString()) { paramJsonObject->get("transaction_base64").convert(transactionBase64String); - if (!session->startProcessingTransaction(transactionBase64String)) { + if (!session->startProcessingTransaction(transactionBase64String, auto_sign)) { auto lastError = session->getLastError(); if (lastError) delete lastError; result->set("state", "error"); @@ -65,7 +71,7 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params) for (int i = 0; i < ds["transaction_base64"].size(); i++) { ds["transaction_base64"][i].convert(transactionBase64String); - if (!session->startProcessingTransaction(transactionBase64String)) { + if (!session->startProcessingTransaction(transactionBase64String, auto_sign)) { auto lastError = session->getLastError(); if (lastError) delete lastError; alreadyEnlisted++; @@ -148,7 +154,7 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params) } else if (params.isDeque()) { result->set("state", "error"); - result->set("meg", "deque not implemented yet"); + result->set("msg", "deque not implemented yet"); } else { @@ -160,10 +166,3 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params) return result; } -bool JsonTransaction::startProcessingTransaction(Session* session, const std::string& transactionBase64) -{ - if ((ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) == ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) { - - } - return session->startProcessingTransaction(transactionBase64); -} \ No newline at end of file diff --git a/src/cpp/model/Session.cpp b/src/cpp/model/Session.cpp index 8e98532df..d28b161cf 100644 --- a/src/cpp/model/Session.cpp +++ b/src/cpp/model/Session.cpp @@ -659,7 +659,7 @@ int Session::comparePassphraseWithSavedKeys(const std::string& inputPassphrase, return 0; } -bool Session::startProcessingTransaction(const std::string& proto_message_base64) +bool Session::startProcessingTransaction(const std::string& proto_message_base64, bool autoSign/* = false*/) { static const char* funcName = "Session::startProcessingTransaction"; lock(funcName); @@ -687,7 +687,7 @@ bool Session::startProcessingTransaction(const std::string& proto_message_base64 DRMakeStringHash(mSessionUser->getEmail()), mSessionUser->getLanguage()) ); - if ((ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) == ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) { + if (autoSign && (ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) == ServerConfig::UNSECURE_AUTO_SIGN_TRANSACTIONS) { if (processorTask->run() != 0) { getErrors(processorTask); unlock(); diff --git a/src/cpp/model/Session.h b/src/cpp/model/Session.h index e70c24e14..ec60b6fc3 100644 --- a/src/cpp/model/Session.h +++ b/src/cpp/model/Session.h @@ -177,7 +177,7 @@ public: // ------------------------ transactions functions ---------------------------- //! \return true if succeed - bool startProcessingTransaction(const std::string& proto_message_base64); + bool startProcessingTransaction(const std::string& proto_message_base64, bool autoSign = false); //! \param working if set will filled with transaction running Poco::AutoPtr getNextReadyTransaction(size_t* working = nullptr); bool finalizeTransaction(bool sign, bool reject);