#include "CheckTransactionPage.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" #include "../SingletonManager/SessionManager.h" #include "../SingletonManager/SingletonTaskObserver.h" #include "../SingletonManager/EmailManager.h" #include "../model/TransactionCreation.h" #include "../model/TransactionTransfer.h" #include "Poco/Thread.h" enum PageState { PAGE_TRANSACTION_CREATION, PAGE_TRANSACTION_TRANSFER, PAGE_NO_TRANSACTIONS, PAGE_USER_DATA_CORRUPTED }; CheckTransactionPage::CheckTransactionPage(Session* arg): SessionHTTPRequestHandler(arg) { } void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("text/html"); bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); #line 24 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" const char* pageName = gettext("Überprüfe Transaktion"); auto account_user = mSession->getNewUser(); auto user_model = account_user->getModel(); auto em = EmailManager::getInstance(); auto userBalance = account_user->getBalance(); std::string memo = ""; bool hasErrors = false; bool enableLogout = true; PageState state = PAGE_NO_TRANSACTIONS; if(!user_model->isEmailChecked()) { addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!"))); hasErrors = true; } if(!form.empty()) { auto ok = form.get("ok", ""); auto abort = form.get("abort", ""); if(abort != "") { mSession->finalizeTransaction(false, true); } else if(ok != "") { if(!account_user->hasPassword()) { auto pwd = form.get("sign-password", ""); auto loginResult = account_user->login(pwd); switch(loginResult) { case 0: addError(new Error(gettext("Passwort"), gettext("Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung"))); hasErrors = true; break; case -1: case -2: addError(new Error(gettext("Passwort"), gettext("Gespeicherte Daten sind korrupt!"))); hasErrors = true; state = PAGE_USER_DATA_CORRUPTED; break; case -3: addError(new Error(gettext("Passwort"), gettext("Passwortprüfung läuft schon, bitte versuche es in 1-2 Minuten erneut."))); hasErrors = true; break; } } if(!hasErrors) { mSession->finalizeTransaction(true, false); } } } size_t notReadyTransactions = 0; size_t sumTransactions = mSession->getProcessingTransactionCount(); if(sumTransactions == 0) { /*auto observer = SingletonTaskObserver::getInstance(); auto emailHash = DRMakeStringHash(mSession->getUser()->getEmail()); int breakCount = 0; while(observer->getTaskCount(emailHash, TASK_OBSERVER_SIGN_TRANSACTION) > 0) { if(breakCount > 100) break; breakCount++; Poco::Thread::sleep(10); }*/ auto lastExternReferer = mSession->getLastReferer(); //lastExternReferer = ""; if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) { //printf("last extern referer: %s\n", lastExternReferer.data()); response.redirect(lastExternReferer); } else { response.redirect(ServerConfig::g_php_serverPath + "state-balances/overview"); } return; } auto processingTransaction = mSession->getNextReadyTransaction(¬ReadyTransactions); if(sumTransactions > 0) { enableLogout = false; } if(PAGE_NO_TRANSACTIONS == state && !processingTransaction.isNull()) { auto transactionType = processingTransaction->getType(); switch(transactionType) { case TRANSACTION_CREATION: state = PAGE_TRANSACTION_CREATION; break; case TRANSACTION_TRANSFER: state = PAGE_TRANSACTION_TRANSFER; break; } } std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include header_navi_chr.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << " \n"; responseStream << ""; #line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" responseStream << ( gettext("Transaktion Unterzeichnen") ); responseStream << "
\n"; responseStream << "\t\t"; #line 136 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" responseStream << ( gettext("Überweisung") ); responseStream << "
\n"; responseStream << "\t\t\t"; #line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" responseStream << ( gettext("Schöpfung") ); responseStream << "
\n"; responseStream << "\t\t\t\t"; #line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" responseStream << ( gettext("Es gibt ein Problem mit deinen gespeicherten Daten, bitte wende dich an den")); responseStream << "getAdminReceiver()); responseStream << "?subject=Corrupt User Data&body=Hallo Dario,%0D%0A%0D%0Ameine Benutzer Daten sind korrupt.%0D%0Akannst du das prüfen?%0D%0A%0D%0AMit freundlichen Grüßen%0D%0A\">"; #line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" responseStream << (gettext("Support") ); responseStream << "
\n"; responseStream << "\t\t\t "; #line 179 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp" } responseStream << "\n"; responseStream << "\t\t\tCommunity Server in Entwicklung
\n"; responseStream << "Alpha "; #line 17 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_chr.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "
\n"; responseStream << "