redirect to last extern referer

This commit is contained in:
Dario 2020-01-14 11:10:27 +01:00
parent 162963637e
commit d8e3728201
14 changed files with 266 additions and 90 deletions

View File

@ -8,6 +8,7 @@
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#include "../SingletonManager/SessionManager.h"
#include "../SingletonManager/SingletonTaskObserver.h"
#include "../model/TransactionCreation.h"
#include "../model/TransactionTransfer.h"
@ -39,7 +40,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
if (_compressResponse) response.set("Content-Encoding", "gzip");
Poco::Net::HTMLForm form(request, request.stream());
#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
const char* pageName = gettext("Überprüfe Transaktion");
auto accountUser = mSession->getUser();
@ -71,8 +72,21 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
size_t notReadyTransactions = 0;
size_t sumTransactions = mSession->getProcessingTransactionCount();
if(sumTransactions == 0) {
Poco::Thread::sleep(1000);
response.redirect(ServerConfig::g_php_serverPath + "state-balances/overview");
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();
if(lastExternReferer != "") {
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(&notReadyTransactions);
@ -229,71 +243,71 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "<div class=\"col-md-10 equel-grid mb-3\">\n";
responseStream << "\t<small class=\"text-gray d-block mt-3\">\n";
responseStream << "\t";
#line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(sumTransactions > 0 && sumTransactions - notReadyTransactions != 1) { responseStream << "\n";
responseStream << "\t\t";
#line 74 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 88 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(notReadyTransactions > 0) { responseStream << " \n";
responseStream << "\t\t\t";
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( sumTransactions - notReadyTransactions );
responseStream << " ";
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("von") );
responseStream << " ";
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( sumTransactions );
responseStream << " ";
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktionen sind bereit zum best&auml;tigen") );
responseStream << "\n";
responseStream << "\t\t";
#line 76 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t";
#line 77 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 91 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( sumTransactions );
responseStream << " ";
#line 77 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 91 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktionen warten darauf best&auml;tigt zu werden.") );
responseStream << "\n";
responseStream << "\t\t";
#line 78 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t";
#line 79 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t";
#line 80 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(state == PAGE_NO_TRANSACTIONS) { responseStream << "\n";
responseStream << "\t\t";
#line 81 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(sumTransactions == 0) { responseStream << "\n";
responseStream << "\t\t\t";
#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Es gibt zurzeit keine Transaktionen zum best&auml;tigen") );
responseStream << "\n";
responseStream << "\t\t";
#line 83 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t";
#line 84 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion(en) werden noch vorbereitet, bitte lade die Seite in wenigen Augenblicken erneut.") );
responseStream << "\n";
responseStream << "\t\t";
#line 85 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << " ";
#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t</small>\n";
responseStream << "</div>\n";
#line 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(state != PAGE_NO_TRANSACTIONS) { responseStream << "\n";
responseStream << "<div class=\"col-md-10 equel-grid\">\n";
responseStream << "\t<div class=\"grid\">\n";
responseStream << "\t <p class=\"grid-header\">";
#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion Unterzeichnen") );
responseStream << "</p>\n";
responseStream << "\t <div class=\"grid-body\">\n";
@ -301,96 +315,96 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t <div class=\"row mb-3\">\n";
responseStream << "\t\t\t<div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t\t";
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(state == PAGE_TRANSACTION_TRANSFER) {
auto transferTransaction = processingTransaction->getTransferTransaction();
memo = transferTransaction->getMemo();
responseStream << "\n";
responseStream << "\t\t\t <p class=\"card-title ml-n1 mb-3\">";
#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("&Uuml;berweisung") );
responseStream << "</p>\n";
responseStream << "\t\t\t <div class=\"table-responsive mb-4\">\n";
responseStream << "\t\t\t\t<table class=\"table info-table table-striped table-bordered\">\n";
responseStream << "\t\t\t\t <thead>\n";
responseStream << "\t\t\t\t\t<tr><th>";
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Konto") );
responseStream << "</th><th>";
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Gradido") );
responseStream << "</th></tr>\n";
responseStream << "\t\t\t\t </thead>\n";
responseStream << "\t\t\t\t <tbody>\n";
responseStream << "\t\t\t\t ";
#line 108 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
for(int i = 0; i < transferTransaction->getKontoTableSize(); i++) { responseStream << "\n";
responseStream << "\t\t\t\t\t<tr>\n";
responseStream << "\t\t\t\t\t\t";
#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transferTransaction->getKontoNameCell(i) );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t";
#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transferTransaction->getAmountCell(i) );
responseStream << "\n";
responseStream << "\t\t\t\t\t</tr>\n";
responseStream << "\t\t\t\t\t";
#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t </tbody>\n";
responseStream << "\t\t\t\t</table>\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t \n";
responseStream << "\t\t\t ";
#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else if(state == PAGE_TRANSACTION_CREATION) {
auto creationTransaction = processingTransaction->getCreationTransaction();
auto transactionUser = creationTransaction->getUser();
memo = creationTransaction->getMemo();
responseStream << "\n";
responseStream << "\t\t\t <p class=\"card-title ml-n1 mb-3\">";
#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Sch&ouml;pfung") );
responseStream << "</p>\n";
responseStream << "\t\t\t <div class=\"table-responsive mb-4\">\n";
responseStream << "\t\t\t\t<table class=\"table info-table table-striped table-bordered\">\n";
responseStream << "\t\t\t\t <thead>\n";
responseStream << "\t\t\t\t\t<tr><th>";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Konto") );
responseStream << "</th><th>";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Gradido") );
responseStream << "</th></tr>\n";
responseStream << "\t\t\t\t </thead>\n";
responseStream << "\t\t\t\t <tbody>\n";
responseStream << "\t\t\t\t\t<tr>\n";
responseStream << "\t\t\t\t\t\t";
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(transactionUser) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t\t<td>";
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transactionUser->getFirstName() );
responseStream << " ";
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transactionUser->getLastName() );
responseStream << " &lt;";
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transactionUser->getEmail() );
responseStream << "&gt;</td>\n";
responseStream << "\t\t\t\t\t\t";
#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 147 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t\t\t<td class=\"small\">0x";
#line 134 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 148 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( creationTransaction->getPublicHex() );
responseStream << "</td>\n";
responseStream << "\t\t\t\t\t\t";
#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t\t<td class=\"grd-success-color\">";
#line 136 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( creationTransaction->getAmountString() );
responseStream << " GDD</td>\n";
responseStream << "\t\t\t\t\t</tr>\n";
@ -398,22 +412,22 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t\t</table>\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t ";
#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 155 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t <div class=\"table-responsive mb-4\">\n";
responseStream << "\t\t\t\t<table class=\"table info-table table-bordered table-auto-break\">\n";
responseStream << "\t\t\t\t <thead><tr><th>";
#line 144 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Aktives Konto") );
responseStream << "</th></tr></thead>\n";
responseStream << "\t\t\t\t <tbody><tr><td>";
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( accountUser->getFirstName() );
responseStream << " ";
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( accountUser->getLastName() );
responseStream << " &lt;";
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( accountUser->getEmail() );
responseStream << "&gt;</td></tr></tbody>\n";
responseStream << "\t\t\t\t</table>\n";
@ -421,12 +435,12 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t <div class=\"table-responsive mb-4\">\n";
responseStream << "\t\t\t\t<table class=\"table info-table table-bordered table-auto-break tab-container\">\n";
responseStream << "\t\t\t\t <thead><tr><th>";
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 164 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Verwendungszweck") );
responseStream << "</th></tr></thead>\n";
responseStream << "\t\t\t\t <tbody><tr>\n";
responseStream << "\t\t\t\t\t <td class=\"tab-content\">";
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( memo );
responseStream << "</td></tr></tbody>\n";
responseStream << "\t\t\t\t</table>\n";
@ -437,32 +451,32 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t <div class=\"row mb-3\">\n";
responseStream << "\t\t\t\t<div class=\"col-md-10 mx-auto\">\n";
responseStream << "\t\t\t\t ";
#line 160 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(!accountUser->hasCryptoKey()) { responseStream << "\n";
responseStream << "\t\t\t\t <div class=\"form-group\">\n";
responseStream << "\t\t\t\t\t <label for=\"sign-password\">";
#line 162 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Ich brauche nochmal dein Passwort") );
responseStream << "</label>\n";
responseStream << "\t\t\t\t\t <input type=\"password\" class=\"form-control\" id=\"sign-password\" name=\"sign-password\" placeholder=\"";
#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 177 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Passwort") );
responseStream << "\">\n";
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t";
#line 165 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 179 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t <button type=\"submit\" class=\"btn btn-sm btn-primary\" name=\"ok\" value=\"ok\">\n";
responseStream << "\t\t\t\t\t<i class=\"mdi mdi-signature-freehand\"></i>\n";
responseStream << "\t\t\t\t\t";
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 182 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion unterzeichnen") );
responseStream << "\n";
responseStream << "\t\t\t\t </button>\n";
responseStream << "\t\t\t\t <button type=\"submit\" class=\"btn btn-sm btn-warning\" name=\"abort\" value=\"abort\">\n";
responseStream << "\t\t\t\t\t<i class=\"mdi mdi-delete\"></i>\n";
responseStream << "\t\t\t\t\t";
#line 172 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 186 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion verwerfen") );
responseStream << "\n";
responseStream << "\t\t\t\t </button>\n";
@ -473,7 +487,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t </div>\n";
responseStream << "\t</div>\n";
responseStream << "</div>\n";
#line 181 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 195 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} // begin include footer_ripple.cpsp
responseStream << "\t</div>\n";
responseStream << " </div>\n";

View File

@ -91,6 +91,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
getErrors(mSession);
auto uri_start = request.serverParams().getServerName();
auto lastExternReferer = mSession->getLastReferer();
switch(userState) {
case USER_EMPTY:
@ -109,7 +110,11 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
return;
case USER_NO_PRIVATE_KEY:
case USER_COMPLETE:
response.redirect(ServerConfig::g_php_serverPath + "/");
if(lastExternReferer != "") {
response.redirect(lastExternReferer);
} else {
response.redirect(ServerConfig::g_php_serverPath + "/");
}
return;
}
@ -183,20 +188,20 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"row\">\n";
responseStream << " <div class=\"col-12 logo-section\">\n";
responseStream << " <a href=\"";
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\" class=\"logo\">\n";
responseStream << "\t\t\t<picture>\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.webp\" type=\"image/webp\">\n";
responseStream << "\t\t\t\t<source srcset=\"";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" type=\"image/png\"> \n";
responseStream << "\t\t\t\t<img src=\"";
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "img/logo_schrift.png\" alt=\"logo\" />\n";
responseStream << "\t\t\t</picture>\n";
@ -208,29 +213,29 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"grid\">\n";
responseStream << "\t\t\t<div class=\"center-ul-container\">\n";
responseStream << "\t\t\t\t";
#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\t \n";
responseStream << "\t\t\t</div>\n";
responseStream << " <div class=\"grid-body\">\n";
responseStream << " <form action=\"";
#line 140 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/\" method=\"POST\">\n";
responseStream << "\t\t\t <input type=\"hidden\" name=\"lang\" value=\"";
#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( LanguageManager::keyForLanguage(lang) );
responseStream << "\">\n";
responseStream << " <div class=\"row pull-right-row\">\n";
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << " <div class=\"grid-body-small text-center\">\n";
responseStream << " <button id=\"flag-england\" name=\"lang-btn\" value=\"en\" title=\"English\" type=\"submit\" ";
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
if(lang != LANG_EN) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 145 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 146 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 151 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
} responseStream << ">\n";
responseStream << " <span class=\"flag-england\"></span>\n";
responseStream << " </button>\n";
@ -239,12 +244,12 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"equel-grid pull-right\">\n";
responseStream << " <div class=\"grid-body-small text-center\">\n";
responseStream << " <button id=\"flag-germany\" name=\"lang-btn\" value=\"de\" title=\"Deutsch\" type=\"submit\" ";
#line 153 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
if(lang != LANG_DE) { responseStream << "class=\"btn btn-outline-secondary flag-btn\"";
#line 153 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 158 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
}
else { responseStream << "class=\"btn btn-secondary disabled flag-btn\" disabled";
#line 154 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
} responseStream << ">\n";
responseStream << " <span class=\"flag-germany\"></span>\n";
responseStream << " </button>\n";
@ -255,39 +260,39 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"col-lg-7 col-md-8 col-sm-9 col-12 mx-auto form-wrapper\">\n";
responseStream << " <div class=\"form-group input-rounded\">\n";
responseStream << " <input type=\"text\" class=\"form-control\" name=\"login-email\" placeholder=\"";
#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("E-Mail") );
responseStream << "\" value=\"";
#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( presetEmail );
responseStream << "\"/>\n";
responseStream << " </div>\n";
responseStream << " <div class=\"form-group input-rounded\">\n";
responseStream << " <input type=\"password\" class=\"form-control\" name=\"login-password\" placeholder=\"";
#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Password") );
responseStream << "\" />\n";
responseStream << " </div>\n";
responseStream << " <button type=\"submit\" name=\"submit\" class=\"btn btn-primary btn-block\">";
#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext(" Login ") );
responseStream << "</button>\n";
responseStream << " <div class=\"signup-link\">\n";
responseStream << " <p>";
#line 170 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 175 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("You haven't any account yet? Please follow the link to create one.") );
responseStream << "</p>\n";
responseStream << " <a href=\"https://gradido.com\">";
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Create New Account") );
responseStream << "</a>\n";
responseStream << " </div>\n";
responseStream << "\t\t\t\t\t<div class=\"reset-pwd-link\">\n";
responseStream << "\t\t\t\t\t\t<a href=\"";
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 179 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/resetPassword\">";
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 179 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Passwort vergessen") );
responseStream << "</a>\n";
responseStream << "\t\t\t\t\t</div>\n";

View File

@ -42,12 +42,18 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
std::string dateTimeString = Poco::DateTimeFormatter::format(Poco::DateTime(), "%d.%m.%y %H:%M:%S");
mRemoveGETParameters.extract(uri, url_first_part);
std::string externReferer;
if (uri != "/favicon.ico") {
//printf("[PageRequestHandlerFactory] uri: %s, first part: %s\n", uri.data(), url_first_part.data());
/*auto referer = request.find("Referer");
auto referer = request.find("Referer");
if (referer != request.end()) {
printf("referer: %s\n", referer->second.data());
}*/
//printf("referer: %s\n", referer->second.data());
auto refererString = referer->second;
if (refererString.find(ServerConfig::g_serverPath) == refererString.npos) {
externReferer = refererString;
}
}//*/
}
if (url_first_part == "/elopage_webhook_261") {
@ -67,6 +73,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
try {
session_id = atoi(cookies.get("GRADIDO_LOGIN").data());
} catch (...) {}
auto sm = SessionManager::getInstance();
auto s = sm->getSession(session_id);
@ -99,6 +106,10 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
return resetPassword;
}
if (s) {
if (externReferer != "") {
s->setLastReferer(externReferer);
}
auto user = s->getUser();
if (s->errorCount() || (!user.isNull() && user->errorCount())) {
user->sendErrorsAsEmail();

View File

@ -0,0 +1,88 @@
#include "JsonGetUsers.h"
#include "Poco/URI.h"
#include "../SingletonManager/SessionManager.h"
#include "../model/table/User.h"
Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params)
{
int session_id = 0;
Poco::JSON::Object* result = new Poco::JSON::Object;
if (params.isStruct()) {
session_id = params["session_id"];
//std::string miau = params["miau"];
}
else if (params.isVector()) {
try {
const Poco::URI::QueryParameters queryParams = params.extract<Poco::URI::QueryParameters>();
for (auto it = queryParams.begin(); it != queryParams.end(); it++) {
if (it->first == "session_id") {
session_id = stoi(it->second);
break;
}
}
//auto var = params[0];
}
catch (const std::invalid_argument& ia) {
result->set("state", "error");
result->set("msg", "error parsing query params, invalid argument: ");
result->set("details", ia.what());
return result;
}
catch (const std::out_of_range& oor) {
result->set("state", "error");
result->set("msg", "error parsing query params, Out of Range error: ");
result->set("details", oor.what());
return result;
}
catch (const std::logic_error & ler) {
result->set("state", "error");
result->set("msg", "error parsing query params, Logical error: ");
result->set("details", ler.what());
return result;
}
catch (Poco::Exception& ex) {
//printf("[JsonGetLogin::handle] exception: %s\n", ex.displayText().data());
result->set("state", "error");
result->set("msg", "error parsing query params, Poco Error");
result->set("details", ex.displayText());
return result;
}
}
if (session_id) {
auto sm = SessionManager::getInstance();
auto session = sm->getSession(session_id);
//Session* session = nullptr;
if (session) {
auto user = session->getUser();
if (!user) {
result->set("state", "not found");
result->set("msg", "Session didn't contain user");
return result;
}
result->set("state", "success");
result->set("clientIP", session->getClientIp().toString());
Poco::JSON::Object usersObj;
model::table::User newUser;
//auto newUsers = newUser.loadFromDB("email_checked", 0, 0);
result->set("user", user->getJson());
result->set("Transaction.pending", session->getProcessingTransactionCount());
//printf("pending: %d\n", session->getProcessingTransactionCount());
return result;
}
else {
result->set("state", "not found");
result->set("msg", "Session not found");
return result;
}
}
else {
result->set("state", "error");
result->set("msg", "empty session id");
}
return result;
}

View File

@ -0,0 +1,16 @@
#ifndef __JSON_INTERFACE_JSON_GET_LOGIN_
#define __JSON_INTERFACE_JSON_GET_LOGIN_
#include "JsonRequestHandler.h"
class JsonGetUsers : public JsonRequestHandler
{
public:
Poco::JSON::Object* handle(Poco::Dynamic::Var params);
protected:
};
#endif // __JSON_INTERFACE_JSON_GET_LOGIN_

View File

@ -443,6 +443,7 @@ void SessionManager::deleteLoginCookies(Poco::Net::HTTPServerRequest& request, P
// max age of 0 delete cookie
keks.setMaxAge(0);
response.addCookie(keks);
printf("remove PHP Kekse\n");
}

View File

@ -41,7 +41,7 @@ void SingletonTaskObserver::addTask(const std::string& email, TaskObserverType t
entry = new UserObserverEntry(email, id);
mObserverEntrys.addByHash(id, entry);
}
if (entry->mEmail != email) {
if (entry->mEmail != "" && entry->mEmail != email) {
em->addError(new ParamError(funcName, "hash collision with ", email.data()));
em->addError(new ParamError(funcName, "and ", entry->mEmail.data()));
em->sendErrorsAsEmail();
@ -172,6 +172,20 @@ int SingletonTaskObserver::getTaskCount(const std::string& email, TaskObserverTy
return count;
}
int SingletonTaskObserver::getTaskCount(DHASH id, TaskObserverType type)
{
lock("SingletonTaskObserver::getTaskCount");
UserObserverEntry* entry = static_cast<UserObserverEntry*>(mObserverEntrys.findByHash(id));
if (!entry) {
unlock();
return -1;
}
int count = entry->mTasksCount[type];
unlock();
return count;
}
std::vector<int> SingletonTaskObserver::getTasksCount(const std::string& email)
{
DHASH id = makeHash(email);

View File

@ -44,6 +44,7 @@ public:
//! \return -1 if no entry for email found
int getTaskCount(const std::string& email, TaskObserverType type);
int getTaskCount(DHASH id, TaskObserverType type);
std::vector<int> getTasksCount(const std::string& email);
static const char* TaskObserverTypeToString(TaskObserverType type);

View File

@ -148,6 +148,10 @@ public:
Languages getLanguage();
inline const char* gettext(const char* text) { if (mLanguageCatalog.isNull()) return text; return mLanguageCatalog->gettext(text); }
// last referer
inline void setLastReferer(const std::string& lastReferer) { mLastExternReferer = lastReferer; }
inline const std::string& getLastReferer() const { return mLastExternReferer; }
protected:
void updateTimeout();
inline void setHandle(int newHandle) { mHandleId = newHandle; }
@ -164,6 +168,7 @@ private:
std::string mPassphrase;
Poco::DateTime mLastActivity;
Poco::Net::IPAddress mClientLoginIP;
std::string mLastExternReferer;
Poco::AutoPtr<controller::EmailVerificationCode> mEmailVerificationCodeObject;

View File

@ -88,7 +88,7 @@ namespace model {
template<class WhereFieldType, class Tuple>
std::vector<Tuple> ModelBase::loadFromDB(const std::string& fieldName, const WhereFieldType& fieldValue, int expectedResults)
{
printf("ModelBase::loadFromDB multi\n");
//printf("ModelBase::loadFromDB multi\n");
std::vector<Tuple> results;
return results;
if (expectedResults > 0) {

View File

@ -22,6 +22,8 @@ namespace model {
USER_FIELDS_LANGUAGE
};
class User : public ModelBase
{
public:

View File

@ -100,7 +100,7 @@ int SigningTransaction::run() {
// finalize
printf("sigpair size: %d\n", transaction.sigmap().sigpair_size());
//printf("sigpair size: %d\n", transaction.sigmap().sigpair_size());
std::string finalTransactionBin = transaction.SerializeAsString();
if (finalTransactionBin == "") {
addError(new Error("SigningTransaction", "error serializing final transaction"));
@ -123,7 +123,7 @@ int SigningTransaction::run() {
Poco::JSON::Object requestJson;
requestJson.set("method", "putTransaction");
requestJson.set("transaction", std::string((char*)*finalBase64Bin));
printf("\nbase64 transaction: \n%s\n\n", (char*)*finalBase64Bin);
//printf("\nbase64 transaction: \n%s\n\n", (char*)*finalBase64Bin);
mm->releaseMemory(finalBase64Bin);
@ -188,7 +188,7 @@ int SigningTransaction::run() {
sendErrorsAsEmail();
return -10;
}
printf("state: %s\n", stateString.data());
//printf("state: %s\n", stateString.data());
int zahl = 1;
}
catch (Poco::Exception& e) {

View File

@ -6,6 +6,7 @@
<%@ page compressed="true" %>
<%!
#include "../SingletonManager/SessionManager.h"
#include "../SingletonManager/SingletonTaskObserver.h"
#include "../model/TransactionCreation.h"
#include "../model/TransactionTransfer.h"
@ -49,8 +50,21 @@ enum PageState {
size_t notReadyTransactions = 0;
size_t sumTransactions = mSession->getProcessingTransactionCount();
if(sumTransactions == 0) {
Poco::Thread::sleep(1000);
response.redirect(ServerConfig::g_php_serverPath + "state-balances/overview");
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();
if(lastExternReferer != "") {
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(&notReadyTransactions);

View File

@ -70,6 +70,7 @@
getErrors(mSession);
auto uri_start = request.serverParams().getServerName();
auto lastExternReferer = mSession->getLastReferer();
switch(userState) {
case USER_EMPTY:
@ -88,7 +89,11 @@
return;
case USER_NO_PRIVATE_KEY:
case USER_COMPLETE:
response.redirect(ServerConfig::g_php_serverPath + "/");
if(lastExternReferer != "") {
response.redirect(lastExternReferer);
} else {
response.redirect(ServerConfig::g_php_serverPath + "/");
}
return;
}