mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
update check transaction
This commit is contained in:
parent
f438210820
commit
2b1f0f1b2d
@ -93,10 +93,13 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/loginServer/style.css\">\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body>\n";
|
||||
responseStream << "<body class=\"header-fixed\">\n";
|
||||
responseStream << "<div class=\"versionstring dev-info\">\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha 0.8.1</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha ";
|
||||
#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << ( ServerConfig::g_versionString );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n";
|
||||
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
|
||||
|
||||
@ -17,9 +17,10 @@ enum PageState {
|
||||
PAGE_NO_TRANSACTIONS
|
||||
};
|
||||
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
|
||||
#include "../ServerConfig.h"
|
||||
#include "../ServerConfig.h"
|
||||
#include "../model/TransactionBase.h"
|
||||
|
||||
|
||||
CheckTransactionPage::CheckTransactionPage(Session* arg):
|
||||
@ -38,8 +39,10 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
|
||||
Poco::Net::HTMLForm form(request, request.stream());
|
||||
#line 19 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
|
||||
const char* pageName = "Überprüfe Transaktion";
|
||||
const char* pageName = gettext("Überprüfe Transaktion");
|
||||
auto accountUser = mSession->getUser();
|
||||
auto userBalance = accountUser->getBalance();
|
||||
std::string memo = "";
|
||||
bool hasErrors = false;
|
||||
bool enableLogout = true;
|
||||
|
||||
@ -52,7 +55,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
|
||||
if(!accountUser->hasCryptoKey()) {
|
||||
auto pwd = form.get("sign-password", "");
|
||||
if(!mSession->isPwdValid(pwd)) {
|
||||
addError(new Error("Passwort", "Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung"));
|
||||
addError(new Error(gettext("Passwort"), gettext("Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung")));
|
||||
hasErrors = true;
|
||||
}
|
||||
}
|
||||
@ -87,7 +90,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
|
||||
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
|
||||
std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
|
||||
responseStream << "\n";
|
||||
// begin include header.cpsp
|
||||
// begin include header_navi.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<!DOCTYPE html>\n";
|
||||
responseStream << "<html>\n";
|
||||
@ -95,226 +98,427 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
|
||||
responseStream << "<meta charset=\"UTF-8\">\n";
|
||||
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n";
|
||||
responseStream << "<title>Gradido Login Server: ";
|
||||
#line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</title>\n";
|
||||
responseStream << "<!--<link rel=\"stylesheet\" type=\"text/css\" href=\"css/styles.min.css\">-->\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/css/styles.css\">\n";
|
||||
responseStream << "<style type=\"text/css\" >\n";
|
||||
responseStream << ".grd_container\n";
|
||||
responseStream << "{\n";
|
||||
responseStream << " max-width:820px;\n";
|
||||
responseStream << " margin-left:auto;\n";
|
||||
responseStream << " margin-right:auto;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "\n";
|
||||
responseStream << "input:not([type='radio']) {\n";
|
||||
responseStream << "\twidth:200px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "label:not(.grd_radio_label) {\n";
|
||||
responseStream << "\twidth:80px;\n";
|
||||
responseStream << "\tdisplay:inline-block;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd_container_small\n";
|
||||
responseStream << "{\n";
|
||||
responseStream << " max-width:500px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd_text {\n";
|
||||
responseStream << " max-width:550px;\n";
|
||||
responseStream << " margin-bottom: 5px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".dev-info {\n";
|
||||
responseStream << "\tposition: fixed;\n";
|
||||
responseStream << "\tcolor:grey;\n";
|
||||
responseStream << "\tfont-size: smaller;\n";
|
||||
responseStream << "\tleft:8px;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << ".grd-time-used { \n";
|
||||
responseStream << " bottom:0;\n";
|
||||
responseStream << "} \n";
|
||||
responseStream << "\n";
|
||||
responseStream << ".versionstring {\n";
|
||||
responseStream << "\ttop:0;\n";
|
||||
responseStream << "}\n";
|
||||
responseStream << "</style>\n";
|
||||
responseStream << "css/rippleUI/style.css\">\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/materialdesignicons.min.css\">\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body>\n";
|
||||
responseStream << "<body class=\"header-fixed\">\n";
|
||||
responseStream << "<div class=\"versionstring dev-info\">\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n";
|
||||
responseStream << "\t<p class=\"grd_small\">Alpha ";
|
||||
#line 17 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_versionString );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n";
|
||||
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
|
||||
responseStream << "\t\t<ul class=\"grd-no-style\">\n";
|
||||
responseStream << "\t\t <li><a href=\"";
|
||||
#line 58 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
|
||||
responseStream << "<nav class=\"t-header\">\n";
|
||||
responseStream << " <div class=\"t-header-brand-wrapper\">\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\" class=\"grd-nav-bn\">Startseite</a>\n";
|
||||
responseStream << "\t\t <li><a href=\"./account/logout\" class=\"grd-nav-bn\">Logout</a></li>\n";
|
||||
responseStream << "\t\t</ul>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</nav>-->";
|
||||
// end include header.cpsp
|
||||
// begin include navi.cpsp
|
||||
responseStream << "<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n";
|
||||
responseStream << "\t<div class=\"grd-left-bar-section\">\n";
|
||||
responseStream << "\t\t<ul class=\"grd-no-style\">\n";
|
||||
responseStream << "\t\t <li><a href=\"";
|
||||
#line 4 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\navi.cpsp"
|
||||
responseStream << "\">\n";
|
||||
responseStream << " <img class=\"logo\" src=\"";
|
||||
#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\" class=\"grd-nav-bn\">Startseite</a>\n";
|
||||
responseStream << "\t\t ";
|
||||
#line 5 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\navi.cpsp"
|
||||
if(enableLogout) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<li><a href=\"./account/logout\" class=\"grd-nav-bn\">Logout</a></li>\n";
|
||||
responseStream << "\t\t ";
|
||||
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\navi.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</ul>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</nav>";
|
||||
// end include navi.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"grd_container\">\n";
|
||||
responseStream << "\t<h1>Eine Transaktion prüfen</h1>\n";
|
||||
responseStream << "\t";
|
||||
#line 68 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "img/logo_schrift_half.webp\" alt=\"Logo\">\n";
|
||||
responseStream << " <img class=\"logo-mini\" src=\"";
|
||||
#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "img/logo_half.webp\" alt=\"Logo\">\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " <button class=\"t-header-toggler t-header-desk-toggler d-none d-lg-block\">\n";
|
||||
responseStream << " <svg class=\"logo\" viewBox=\"0 0 200 200\">\n";
|
||||
responseStream << " <path class=\"top\" d=\"\n";
|
||||
responseStream << " M 40, 80\n";
|
||||
responseStream << " C 40, 80 120, 80 140, 80\n";
|
||||
responseStream << " C180, 80 180, 20 90, 80\n";
|
||||
responseStream << " C 60,100 30,120 30,120\n";
|
||||
responseStream << " \"></path>\n";
|
||||
responseStream << " <path class=\"middle\" d=\"\n";
|
||||
responseStream << " M 40,100\n";
|
||||
responseStream << " L140,100\n";
|
||||
responseStream << " \"></path>\n";
|
||||
responseStream << " <path class=\"bottom\" d=\"\n";
|
||||
responseStream << " M 40,120\n";
|
||||
responseStream << " C 40,120 120,120 140,120\n";
|
||||
responseStream << " C180,120 180,180 90,120\n";
|
||||
responseStream << " C 60,100 30, 80 30, 80\n";
|
||||
responseStream << " \"></path>\n";
|
||||
responseStream << " </svg>\n";
|
||||
responseStream << " </button>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"t-header-content-wrapper\">\n";
|
||||
responseStream << " <div class=\"t-header-content\">\n";
|
||||
responseStream << " <button class=\"t-header-toggler t-header-mobile-toggler d-block d-lg-none\">\n";
|
||||
responseStream << " <i class=\"mdi mdi-menu\"></i>\n";
|
||||
responseStream << " </button>\n";
|
||||
responseStream << " <div class=\"flash-messages\" style=\"margin-left:20px; margin-top:30px;\">";
|
||||
#line 51 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </nav>\n";
|
||||
responseStream << " <div class=\"page-body\">\n";
|
||||
responseStream << " <!-- partial:partials/_sidebar.html -->\n";
|
||||
responseStream << " <div class=\"sidebar\">\n";
|
||||
responseStream << " <ul class=\"navigation-menu\">\n";
|
||||
responseStream << " <li>\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 60 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "state-balances/overview\" title=\"Kontoübersicht\">\n";
|
||||
responseStream << " <span class=\"link-title\">";
|
||||
#line 61 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( TransactionBase::amountToString(userBalance) );
|
||||
responseStream << " GDD</span>\n";
|
||||
responseStream << " <i class=\"mdi mdi-wallet-outline link-icon\"></i>\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " </li>\n";
|
||||
responseStream << " <li>\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 66 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\">\n";
|
||||
responseStream << " <span class=\"link-title\">Startseite</span>\n";
|
||||
responseStream << " <i class=\"mdi mdi-gauge link-icon\"></i>\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " </li>\n";
|
||||
responseStream << " <li>\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 72 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "transaction-send-coins/create\">\n";
|
||||
responseStream << " <span class=\"link-title\">Überweisen</span>\n";
|
||||
responseStream << " <i class=\"mdi mdi-bank-transfer-out link-icon\"></i>\n";
|
||||
responseStream << " </a>\n";
|
||||
responseStream << " </li>\n";
|
||||
responseStream << " </ul>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"page-content-wrapper\">\n";
|
||||
responseStream << " <div class=\"page-content-wrapper-inner\">\n";
|
||||
responseStream << " <div class=\"viewport-header\">\n";
|
||||
responseStream << " <nav aria-label=\"breadcrumb\">\n";
|
||||
responseStream << " <ol class=\"breadcrumb has-arrow\">\n";
|
||||
responseStream << " <li class=\"breadcrumb-item\">\n";
|
||||
responseStream << " <a href=\"";
|
||||
#line 85 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "\">Startseite</a>\n";
|
||||
responseStream << " </li>\n";
|
||||
responseStream << " <li class=\"breadcrumb-item active\" aria-current=\"page\">";
|
||||
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_navi.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</li>\n";
|
||||
responseStream << " </ol>\n";
|
||||
responseStream << " </nav>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"content-viewport\">";
|
||||
// end include header_navi.cpsp
|
||||
responseStream << "\n";
|
||||
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 69 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
#line 70 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(sumTransactions > 0 && sumTransactions - notReadyTransactions != 1) { responseStream << "\n";
|
||||
responseStream << "\t\t";
|
||||
#line 70 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
#line 71 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(notReadyTransactions > 0) { responseStream << " \n";
|
||||
responseStream << "\t\t\t<pre>";
|
||||
#line 71 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( sumTransactions - notReadyTransactions );
|
||||
responseStream << " von ";
|
||||
#line 71 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( sumTransactions );
|
||||
responseStream << " Transaktionen sind bereit zum prüfen</pre>\n";
|
||||
responseStream << "\t\t";
|
||||
responseStream << "\t\t\t";
|
||||
#line 72 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( sumTransactions - notReadyTransactions );
|
||||
responseStream << " ";
|
||||
#line 72 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("von") );
|
||||
responseStream << " ";
|
||||
#line 72 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} else { responseStream << "\n";
|
||||
responseStream << "\t\t\t<pre>";
|
||||
#line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( sumTransactions );
|
||||
responseStream << " Transaktionen warten darauf überprüft zu werden.</pre>\n";
|
||||
responseStream << " ";
|
||||
#line 72 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Transaktionen sind bereit zum bestätigen") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t";
|
||||
#line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} else { responseStream << "\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 74 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t";
|
||||
responseStream << ( sumTransactions );
|
||||
responseStream << " ";
|
||||
#line 74 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Transaktionen warten darauf bestätigt zu werden.") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t";
|
||||
#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t";
|
||||
#line 76 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t";
|
||||
#line 77 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(state == PAGE_NO_TRANSACTIONS) { responseStream << "\n";
|
||||
responseStream << "\t<div class=\"grd_text-max-width\">\n";
|
||||
responseStream << "\t\t";
|
||||
#line 78 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(sumTransactions == 0) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<div class=\"grd_text\">Es gibt zurzeit keine Transaktionen zum überprüfen</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 79 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Es gibt zurzeit keine Transaktionen zum bestätigen") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t";
|
||||
#line 80 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} else { responseStream << "\n";
|
||||
responseStream << "\t\t\t<div class=\"grd_text\">Transaktion(en) werden noch vorbereitet, bitte lade die Seite in wenigen Augenblicken erneut.</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 81 "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 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t\n";
|
||||
responseStream << "\t";
|
||||
#line 85 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} else if(state == PAGE_TRANSACTION_CREATION) {
|
||||
auto creationTransaction = processingTransaction->getCreationTransaction();
|
||||
auto transactionUser = creationTransaction->getUser();
|
||||
|
||||
responseStream << "\n";
|
||||
responseStream << "\t<div class=\"grd_text-max-width\">\n";
|
||||
responseStream << "\t\t<h2>Schöpfungstransaktion</h2>\n";
|
||||
responseStream << "\t\t<b>Memo: </b>\n";
|
||||
responseStream << "\t\t<p>";
|
||||
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( creationTransaction->getMemo() );
|
||||
responseStream << " ";
|
||||
#line 83 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t</small>\n";
|
||||
responseStream << "</div>\n";
|
||||
#line 86 "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 89 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Transaktion Unterzeichnen") );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t<b>Empfänger: </b>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "\t <div class=\"grid-body\">\n";
|
||||
responseStream << "\t\t<div class=\"item-wrapper\">\n";
|
||||
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 94 "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 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Ü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 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Konto") );
|
||||
responseStream << "</th><th>";
|
||||
#line 102 "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 105 "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 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( transferTransaction->getKontoNameCell(i) );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 108 "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 110 "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 115 "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 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Schö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 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Konto") );
|
||||
responseStream << "</th><th>";
|
||||
#line 124 "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 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(transactionUser) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<p class=\"grd_small\">";
|
||||
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t\t<td>";
|
||||
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( transactionUser->getFirstName() );
|
||||
responseStream << " ";
|
||||
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( transactionUser->getLastName() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t<p class=\"grd_small\">";
|
||||
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << " <";
|
||||
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( transactionUser->getEmail() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 98 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "></td>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} else { responseStream << "\n";
|
||||
responseStream << "\t\t\t<p class=\"grd_small\">";
|
||||
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t\t<td class=\"small\">0x";
|
||||
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( creationTransaction->getPublicHex() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 100 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "</td>\n";
|
||||
responseStream << "\t\t\t\t\t\t";
|
||||
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t<b>Summe: </b>\n";
|
||||
responseStream << "\t\t";
|
||||
#line 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "\t\t\t\t\t\t<td class=\"grd-success-color\">";
|
||||
#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( creationTransaction->getAmountString() );
|
||||
responseStream << " Gradido\n";
|
||||
responseStream << "\t\t<form >\n";
|
||||
responseStream << "\t\t\tUnterschreiben mit aktuellem Account?<br>\n";
|
||||
responseStream << "\t\t\t<p class=\"grd_small\">";
|
||||
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << " GDD</td>\n";
|
||||
responseStream << "\t\t\t\t\t</tr>\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 ";
|
||||
#line 138 "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 141 "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 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( accountUser->getFirstName() );
|
||||
responseStream << " ";
|
||||
#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
#line 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( accountUser->getLastName() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t<p class=\"grd_small\">";
|
||||
#line 106 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << " <";
|
||||
#line 142 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( accountUser->getEmail() );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
// TODO: additional password check responseStream << "\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 108 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "></td></tr></tbody>\n";
|
||||
responseStream << "\t\t\t\t</table>\n";
|
||||
responseStream << "\t\t\t </div>\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 tab-container\">\n";
|
||||
responseStream << "\t\t\t\t <thead><tr><th>";
|
||||
#line 147 "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 149 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( memo );
|
||||
responseStream << "</td></tr></tbody>\n";
|
||||
responseStream << "\t\t\t\t</table>\n";
|
||||
responseStream << "\t\t\t </div>\n";
|
||||
responseStream << "\t\t\t</div>\n";
|
||||
responseStream << "\t\t </div>\n";
|
||||
responseStream << "\t\t\t<form>\n";
|
||||
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 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
if(!accountUser->hasCryptoKey()) { responseStream << "\n";
|
||||
responseStream << "\t\t\t<p>Ich brauche nochmal dein Passwort</p>\n";
|
||||
responseStream << "\t\t\t\t<p class=\"grd_small\">\n";
|
||||
responseStream << "\t\t\t\t\t<label for=\"sign-password\">Passwort</label>\n";
|
||||
responseStream << "\t\t\t\t\t<input id=\"sign-password\" type=\"password\" name=\"sign-password\"/>\n";
|
||||
responseStream << "\t\t\t\t</p>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t<input class=\"grd-form-bn grd-form-bn-succeed grd_clickable\" type=\"submit\" name=\"ok\" value=\"Transaktion unterzeichnen\">\n";
|
||||
responseStream << "\t\t\t<input class=\"grd-form-bn grd-form-bn-discard grd_clickable\" type=\"submit\" name=\"abort\" value=\"Transaktion verwerfen\">\n";
|
||||
responseStream << "\t\t</form>\n";
|
||||
responseStream << "\t</div>\t\n";
|
||||
responseStream << "\t";
|
||||
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << "\t\t\t\t <div class=\"form-group\">\n";
|
||||
responseStream << "\t\t\t\t\t <label for=\"sign-password\">";
|
||||
#line 159 "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 160 "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 162 "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 165 "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 169 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
responseStream << ( gettext("Transaktion verwerfen") );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t </button>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t </div>\n";
|
||||
responseStream << "\t\t\t</form>\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t </div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</div>\n";
|
||||
// begin include footer.cpsp
|
||||
responseStream << "\t<div class=\"grd-time-used dev-info\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 2 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
|
||||
#line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
|
||||
} // begin include footer_ripple.cpsp
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <!-- content viewport ends -->\n";
|
||||
responseStream << " <!-- partial:partials/_footer.html -->\n";
|
||||
responseStream << " <footer class=\"footer\">\n";
|
||||
responseStream << " <div class=\"row\">\n";
|
||||
responseStream << " <div class=\"col-sm-6 text-center text-sm-right order-sm-1\">\n";
|
||||
responseStream << " <ul class=\"text-gray\">\n";
|
||||
responseStream << " <li><a href=\"#\">Terms of use</a></li>\n";
|
||||
responseStream << " <li><a href=\"#\">Privacy Policy</a></li>\n";
|
||||
responseStream << " </ul>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"col-sm-6 text-center text-sm-left mt-3 mt-sm-0\">\n";
|
||||
responseStream << " <small class=\"text-muted d-block\">Copyright © 2019 Gradido</small>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </footer>\n";
|
||||
responseStream << " <!-- partial -->\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <!-- page content ends -->\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"grd-time-used dev-info\">\n";
|
||||
responseStream << " ";
|
||||
#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp"
|
||||
responseStream << ( mTimeProfiler.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "</body>\n";
|
||||
responseStream << "</html>";
|
||||
// end include footer.cpsp
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <!--page body ends -->\n";
|
||||
responseStream << " <!-- SCRIPT LOADING START FORM HERE /////////////-->\n";
|
||||
responseStream << " <!-- plugins:js -->\n";
|
||||
responseStream << " <!--<script src=\"../../../assets/vendors/js/core.js\"></script>-->\n";
|
||||
responseStream << " <!--<script src=\"../../../assets/vendors/js/vendor.addons.js\"></script>-->\n";
|
||||
responseStream << " <!-- endinject -->\n";
|
||||
responseStream << " <!-- Vendor Js For This Page Ends-->\n";
|
||||
responseStream << " <!--<script src=\"../../../assets/vendors/chartjs/Chart.min.js\"></script>-->\n";
|
||||
responseStream << " <!-- Vendor Js For This Page Ends-->\n";
|
||||
responseStream << " <!-- build:js -->\n";
|
||||
responseStream << " <!--<script src=\"../../../assets/js/template.js\"></script>-->\n";
|
||||
responseStream << " <script src=\"";
|
||||
#line 36 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "/js/basic.js\"></script>\n";
|
||||
responseStream << " <!--<script src=\"../../../assets/js/dashboard.js\"></script>-->\n";
|
||||
responseStream << " <!-- endbuild -->\n";
|
||||
responseStream << " </body>\n";
|
||||
responseStream << "</html>\n";
|
||||
responseStream << " ";
|
||||
// end include footer_ripple.cpsp
|
||||
if (_compressResponse) _gzipStream.close();
|
||||
}
|
||||
|
||||
@ -238,8 +238,20 @@ int HandleElopageRequestTask::run()
|
||||
std::string order_id = mRequestData.get("order_id", "");
|
||||
auto param_error_order_id = new ParamError("HandleElopageRequestTask", "order_id", order_id.data());
|
||||
|
||||
/*!
|
||||
*
|
||||
|
||||
Registrierung – Schritt 1 von 3, 36001
|
||||
Gradido-Basis, 43741
|
||||
Premium-Mitgliedschaft, 43870
|
||||
Gold-Mitgliedschaft, 43944
|
||||
Business-Mitgliedschaft, 43960
|
||||
|
||||
|
||||
*
|
||||
*/
|
||||
// only for product 36001 and 43741 create user accounts and send emails
|
||||
if (product_id == 36001 || product_id == 43741) {
|
||||
if (product_id == 36001 || product_id == 43741 || product_id == 43870 || product_id == 43944 || product_id == 43960) {
|
||||
mEmail = mRequestData.get("payer[email]", "");
|
||||
mFirstName = mRequestData.get("payer[first_name]", "");
|
||||
mLastName = mRequestData.get("payer[last_name]", "");
|
||||
|
||||
@ -27,14 +27,19 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po
|
||||
Poco::JSON::Object* json_result = nullptr;
|
||||
if (method == "POST" || method == "PUT") {
|
||||
// extract parameter from request
|
||||
Poco::JSON::Parser jsonParser;
|
||||
try {
|
||||
Poco::Dynamic::Var parsedResult = parseJsonWithErrorPrintFile(request_stream);
|
||||
//Poco::JSON::Parser jsonParser;
|
||||
|
||||
/*try {
|
||||
auto params = jsonParser.parse(request_stream);
|
||||
// call logic
|
||||
json_result = handle(params);
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
printf("[JsonRequestHandler::handleRequest] Exception: %s\n", ex.displayText().data());
|
||||
}*/
|
||||
if (parsedResult.size() != 0) {
|
||||
json_result = handle(parsedResult);
|
||||
}
|
||||
}
|
||||
else if(method == "GET") {
|
||||
@ -50,3 +55,37 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po
|
||||
|
||||
//if (_compressResponse) _gzipStream.close();
|
||||
}
|
||||
|
||||
|
||||
Poco::Dynamic::Var JsonRequestHandler::parseJsonWithErrorPrintFile(std::istream& request_stream, ErrorList* errorHandler /* = nullptr*/, const char* functionName /* = nullptr*/)
|
||||
{
|
||||
// debugging answer
|
||||
|
||||
std::stringstream responseStringStream;
|
||||
for (std::string line; std::getline(request_stream, line); ) {
|
||||
responseStringStream << line << std::endl;
|
||||
}
|
||||
|
||||
// extract parameter from request
|
||||
Poco::JSON::Parser jsonParser;
|
||||
Poco::Dynamic::Var parsedJson;
|
||||
try {
|
||||
parsedJson = jsonParser.parse(responseStringStream.str());
|
||||
|
||||
return parsedJson;
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
if (errorHandler) {
|
||||
errorHandler->addError(new ParamError(functionName, "error parsing request answer", ex.displayText().data()));
|
||||
errorHandler->sendErrorsAsEmail(responseStringStream.str());
|
||||
}
|
||||
std::string dateTimeString = Poco::DateTimeFormatter::format(Poco::DateTime(), "%d.%m.%y %H:%M:%S");
|
||||
std::string filename = dateTimeString + "_response.html";
|
||||
FILE* f = fopen(filename.data(), "wt");
|
||||
std::string responseString = responseStringStream.str();
|
||||
fwrite(responseString.data(), 1, responseString.size(), f);
|
||||
fclose(f);
|
||||
return Poco::Dynamic::Var();
|
||||
}
|
||||
return Poco::Dynamic::Var();
|
||||
}
|
||||
@ -4,6 +4,9 @@
|
||||
#include "Poco/Net/HTTPRequestHandler.h"
|
||||
#include "Poco/JSON/Object.h"
|
||||
|
||||
#include "../lib/ErrorList.h"
|
||||
|
||||
|
||||
class JsonRequestHandler : public Poco::Net::HTTPRequestHandler
|
||||
{
|
||||
public:
|
||||
@ -11,6 +14,8 @@ public:
|
||||
|
||||
virtual Poco::JSON::Object* handle(Poco::Dynamic::Var params) = 0;
|
||||
|
||||
static Poco::Dynamic::Var parseJsonWithErrorPrintFile(std::istream& request_stream, ErrorList* errorHandler = nullptr, const char* functionName = nullptr);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
@ -8,7 +8,56 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params)
|
||||
Poco::JSON::Object* result = new Poco::JSON::Object;
|
||||
int session_id = 0;
|
||||
|
||||
if (params.isVector()) {
|
||||
// if is json object
|
||||
if (params.type() == typeid(Poco::JSON::Object::Ptr)) {
|
||||
Poco::JSON::Object::Ptr paramJsonObject = params.extract<Poco::JSON::Object::Ptr>();
|
||||
|
||||
try {
|
||||
/// Throws a RangeException if the value does not fit
|
||||
/// into the result variable.
|
||||
/// Throws a NotImplementedException if conversion is
|
||||
/// not available for the given type.
|
||||
/// Throws InvalidAccessException if Var is empty.
|
||||
paramJsonObject->get("session_id").convert(session_id);
|
||||
auto sm = SessionManager::getInstance();
|
||||
if (session_id != 0) {
|
||||
auto session = sm->getSession(session_id);
|
||||
if (!session) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "session not found");
|
||||
return result;
|
||||
}
|
||||
|
||||
int balance = 0;
|
||||
paramJsonObject->get("balance").convert(balance);
|
||||
if (balance) {
|
||||
auto u = session->getUser();
|
||||
if (u) {
|
||||
u->setBalance(balance);
|
||||
}
|
||||
}
|
||||
|
||||
std::string transactionBase64String;
|
||||
paramJsonObject->get("transaction_base64").convert(transactionBase64String);
|
||||
|
||||
if (!session->startProcessingTransaction(transactionBase64String)) {
|
||||
auto lastError = session->getLastError();
|
||||
if (lastError) delete lastError;
|
||||
result->set("state", "error");
|
||||
result->set("msg", "already enlisted");
|
||||
return result;
|
||||
}
|
||||
|
||||
result->set("state", "success");
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
printf("[JsonTransaction::handle] try to use params as jsonObject: %s\n", ex.displayText().data());
|
||||
}
|
||||
}
|
||||
else if (params.isVector()) {
|
||||
const Poco::URI::QueryParameters queryParams = params.extract<Poco::URI::QueryParameters>();
|
||||
auto transactionIT = queryParams.begin();
|
||||
for (auto it = queryParams.begin(); it != queryParams.end(); it++) {
|
||||
@ -44,9 +93,32 @@ Poco::JSON::Object* JsonTransaction::handle(Poco::Dynamic::Var params)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
else if (params.isStruct()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "struct not implemented yet");
|
||||
}
|
||||
else if (params.isArray()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "array not implemented yet");
|
||||
}
|
||||
else if (params.isList()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "list not implemented yet");
|
||||
}
|
||||
else if (params.isString()) {
|
||||
result->set("state", "error");
|
||||
result->set("msg", "string not implemented yet");
|
||||
}
|
||||
else if (params.isDeque()) {
|
||||
result->set("state", "error");
|
||||
result->set("meg", "deque not implemented yet");
|
||||
}
|
||||
else {
|
||||
|
||||
result->set("state", "error");
|
||||
result->set("msg", "format not implemented");
|
||||
result->set("state", "error");
|
||||
result->set("msg", "format not implemented");
|
||||
result->set("details", std::string(params.type().name()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -43,8 +43,8 @@ namespace ServerConfig {
|
||||
std::string g_php_serverPath;
|
||||
std::string g_php_serverHost;
|
||||
Poco::Mutex g_TimeMutex;
|
||||
|
||||
|
||||
int g_FakeLoginSleepTime = 820;
|
||||
std::string g_versionString = "";
|
||||
|
||||
bool loadMnemonicWordLists()
|
||||
{
|
||||
@ -100,6 +100,7 @@ namespace ServerConfig {
|
||||
g_default_locale = LanguageManager::languageFromString(cfg.getString("loginServer.default_locale"));
|
||||
g_php_serverPath = cfg.getString("phpServer.url", "");
|
||||
g_php_serverHost = cfg.getString("phpServer.host", "");
|
||||
//g_FakeLoginSleepTime = cfg.getInt("crypto.fake_login_sleep_time", g_FakeLoginSleepTime);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -43,6 +43,8 @@ namespace ServerConfig {
|
||||
extern std::string g_php_serverPath;
|
||||
extern std::string g_php_serverHost;
|
||||
extern Poco::Mutex g_TimeMutex;
|
||||
extern int g_FakeLoginSleepTime;
|
||||
extern std::string g_versionString;
|
||||
|
||||
bool loadMnemonicWordLists();
|
||||
bool initServerCrypto(const Poco::Util::LayeredConfiguration& cfg);
|
||||
|
||||
@ -5,8 +5,12 @@
|
||||
|
||||
#include "model/User.h"
|
||||
#include "model/Session.h"
|
||||
#include "lib/Profiler.h"
|
||||
#include "ServerConfig.h"
|
||||
|
||||
#ifndef _TEST_BUILD
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
GOOGLE_PROTOBUF_VERIFY_VERSION;
|
||||
@ -15,8 +19,15 @@ int main(int argc, char** argv)
|
||||
printf("error initing sodium, early exit\n");
|
||||
return -1;
|
||||
}
|
||||
ServerConfig::g_versionString = "0.9.0";
|
||||
printf("User size: %d Bytes, Session size: %d Bytes\n", sizeof(User), sizeof(Session));
|
||||
|
||||
// first check time for crypto
|
||||
auto testUser = new User("email@google.de", "Max", "Mustermann");
|
||||
Profiler timeUsed;
|
||||
testUser->validatePwd("haz27Newpassword", nullptr);
|
||||
ServerConfig::g_FakeLoginSleepTime = (int)std::round(timeUsed.millis());
|
||||
delete testUser;
|
||||
|
||||
|
||||
Gradido_LoginServer app;
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
#include "../proto/gradido/BasicTypes.pb.h"
|
||||
#include "../SingletonManager/MemoryManager.h"
|
||||
|
||||
class TransactionBase : public ErrorList
|
||||
class TransactionBase : public ErrorList, public UniLib::lib::MultithreadContainer
|
||||
{
|
||||
public:
|
||||
TransactionBase(const std::string& memo);
|
||||
|
||||
@ -29,7 +29,7 @@ int TransactionCreation::prepare()
|
||||
addError(new Error(functionName, "receiver public invalid (size not 32)"));
|
||||
return -2;
|
||||
}
|
||||
mReceiverUser = new User(receiverPublic.data());
|
||||
mReceiverUser = new User((const unsigned char*)receiverPublic.data());
|
||||
getErrors(mReceiverUser);
|
||||
if (mReceiverUser->getUserState() == USER_EMPTY) {
|
||||
sodium_bin2hex(mReceiverPublicHex, 65, (const unsigned char*)receiverPublic.data(), receiverPublic.size());
|
||||
|
||||
@ -1,14 +1,155 @@
|
||||
#include "TransactionTransfer.h"
|
||||
|
||||
|
||||
|
||||
TransactionTransfer::KontoTableEntry::KontoTableEntry(User* user, google::protobuf::int64 amount, bool negativeAmount/* = false*/)
|
||||
{
|
||||
if (!user) return;
|
||||
|
||||
composeAmountCellString(amount, negativeAmount);
|
||||
|
||||
kontoNameCell = "<td>";
|
||||
kontoNameCell += user->getFirstName();
|
||||
kontoNameCell += " ";
|
||||
kontoNameCell += user->getLastName();
|
||||
kontoNameCell += " <";
|
||||
kontoNameCell += user->getEmail();
|
||||
kontoNameCell += "></td>";
|
||||
}
|
||||
|
||||
TransactionTransfer::KontoTableEntry::KontoTableEntry(const std::string& pubkeyHex, google::protobuf::int64 amount, bool negativeAmount/* = false*/)
|
||||
{
|
||||
composeAmountCellString(amount, negativeAmount);
|
||||
kontoNameCell = "<td class=\"small\">0x" + pubkeyHex + "</td>";
|
||||
}
|
||||
|
||||
void TransactionTransfer::KontoTableEntry::composeAmountCellString(google::protobuf::int64 amount, bool negativeAmount)
|
||||
{
|
||||
if (negativeAmount) {
|
||||
amountCell = "<td class =\"grd-alert-color\">-";
|
||||
}
|
||||
else {
|
||||
amountCell = "<td class=\"grd-success-color\">";
|
||||
}
|
||||
amountCell += amountToString(amount);
|
||||
amountCell += " GDD</td>";
|
||||
}
|
||||
|
||||
// ********************************************************************************************************************************
|
||||
|
||||
TransactionTransfer::TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer)
|
||||
: TransactionBase(memo), mProtoTransfer(protoTransfer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
TransactionTransfer::~TransactionTransfer()
|
||||
{
|
||||
mKontoTable.clear();
|
||||
}
|
||||
|
||||
int TransactionTransfer::prepare()
|
||||
{
|
||||
|
||||
lock();
|
||||
const static char functionName[] = { "TransactionTransfer::prepare" };
|
||||
if (mProtoTransfer.senderamounts_size() == 0) {
|
||||
addError(new Error(functionName, "hasn't sender amount(s)"));
|
||||
unlock();
|
||||
return -1;
|
||||
}
|
||||
if (mProtoTransfer.receiveramounts_size() == 0) {
|
||||
addError(new Error(functionName, "hasn't receiver amount(s)"));
|
||||
unlock();
|
||||
return -2;
|
||||
}
|
||||
mKontoTable.reserve(mProtoTransfer.senderamounts_size() + mProtoTransfer.receiveramounts_size());
|
||||
|
||||
//auto receiverAmount = mProtoTransfer.receiveramount();
|
||||
//auto senderAmount
|
||||
int senderSum = 0;
|
||||
int receiverSum = 0;
|
||||
|
||||
char pubkeyHexTemp[65];
|
||||
|
||||
for (int i = 0; i < mProtoTransfer.senderamounts_size(); i++) {
|
||||
auto senderAmount = mProtoTransfer.senderamounts(i);
|
||||
auto pubkey = senderAmount.ed25519_sender_pubkey();
|
||||
senderSum += senderAmount.amount();
|
||||
if (pubkey.size() != 32) {
|
||||
addError(new ParamError(functionName, "invalid public key for sender ", i));
|
||||
unlock();
|
||||
return -3;
|
||||
}
|
||||
User user((const unsigned char*)pubkey.data());
|
||||
if (user.getUserState() == USER_EMPTY) {
|
||||
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
|
||||
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, senderAmount.amount(), true));
|
||||
}
|
||||
else {
|
||||
mKontoTable.push_back(KontoTableEntry(&user, senderAmount.amount(), true));
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < mProtoTransfer.receiveramounts_size(); i++) {
|
||||
auto receiverAmount = mProtoTransfer.receiveramounts(i);
|
||||
auto pubkey = receiverAmount.ed25519_receiver_pubkey();
|
||||
receiverSum += receiverAmount.amount();
|
||||
if (receiverAmount.ed25519_receiver_pubkey().size() != 32) {
|
||||
addError(new ParamError(functionName, "invalid public key for receiver ", i));
|
||||
unlock();
|
||||
return -4;
|
||||
}
|
||||
User user((const unsigned char*)pubkey.data());
|
||||
if (user.getUserState() == USER_EMPTY) {
|
||||
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
|
||||
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, receiverAmount.amount(), false));
|
||||
}
|
||||
else {
|
||||
mKontoTable.push_back(KontoTableEntry(&user, receiverAmount.amount(), false));
|
||||
}
|
||||
}
|
||||
if (senderSum != receiverSum) {
|
||||
addError(new Error(functionName, "sender amounts sum != receiver amounts sum"));
|
||||
unlock();
|
||||
return -5;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
mReceiverUser = new User(receiverPublic.data());
|
||||
getErrors(mReceiverUser);
|
||||
if (mReceiverUser->getUserState() == USER_EMPTY) {
|
||||
sodium_bin2hex(mReceiverPublicHex, 65, (const unsigned char*)receiverPublic.data(), receiverPublic.size());
|
||||
delete mReceiverUser;
|
||||
mReceiverUser = nullptr;
|
||||
}
|
||||
else {
|
||||
memcpy(mReceiverPublicHex, mReceiverUser->getPublicKeyHex().data(), 64);
|
||||
}
|
||||
//*/
|
||||
|
||||
unlock();
|
||||
return 0;
|
||||
}
|
||||
|
||||
const std::string& TransactionTransfer::getKontoNameCell(int index)
|
||||
{
|
||||
lock();
|
||||
if (index >= mKontoTable.size()) {
|
||||
unlock();
|
||||
return "invalid index";
|
||||
}
|
||||
unlock();
|
||||
|
||||
return mKontoTable[index].kontoNameCell;
|
||||
}
|
||||
const std::string& TransactionTransfer::getAmountCell(int index)
|
||||
{
|
||||
lock();
|
||||
if (index >= mKontoTable.size()) {
|
||||
unlock();
|
||||
return "invalid index";
|
||||
}
|
||||
unlock();
|
||||
|
||||
return mKontoTable[index].amountCell;
|
||||
}
|
||||
|
||||
@ -12,15 +12,35 @@
|
||||
#include "TransactionBase.h"
|
||||
#include "../proto/gradido/Transfer.pb.h"
|
||||
|
||||
#include "User.h"
|
||||
|
||||
class TransactionTransfer : public TransactionBase
|
||||
{
|
||||
public:
|
||||
TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer);
|
||||
~TransactionTransfer();
|
||||
|
||||
int prepare();
|
||||
|
||||
inline size_t getKontoTableSize() { lock(); size_t s = mKontoTable.size(); unlock(); return s; }
|
||||
const std::string& getKontoNameCell(int index);
|
||||
const std::string& getAmountCell(int index);
|
||||
|
||||
protected:
|
||||
struct KontoTableEntry {
|
||||
public:
|
||||
KontoTableEntry(User* user, google::protobuf::int64 amount, bool negativeAmount = false);
|
||||
KontoTableEntry(const std::string& pubkeyHex, google::protobuf::int64 amount, bool negativeAmount = false);
|
||||
// first name, last name and email or pubkey hex if no user in db found
|
||||
std::string kontoNameCell;
|
||||
std::string amountCell;
|
||||
|
||||
protected:
|
||||
void composeAmountCellString(google::protobuf::int64 amount, bool negativeAmount);
|
||||
};
|
||||
|
||||
const model::messages::gradido::Transfer& mProtoTransfer;
|
||||
std::vector<KontoTableEntry> mKontoTable;
|
||||
};
|
||||
|
||||
#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_TRANSFER_INCLUDE
|
||||
@ -174,14 +174,15 @@ int UserWriteCryptoKeyHashIntoDB::run()
|
||||
// *******************************************************************************
|
||||
// new user
|
||||
User::User(const char* email, const char* first_name, const char* last_name)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mFirstName(first_name), mLastName(last_name), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr),
|
||||
mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mFirstName(first_name), mLastName(last_name), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false),
|
||||
mLanguage(LANG_DE), mGradidoCurrentBalance(0), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
memset(mPublicKey, 0, crypto_sign_PUBLICKEYBYTES);
|
||||
}
|
||||
// load from db
|
||||
User::User(const char* email)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(0), mEmail(email), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false),
|
||||
mLanguage(LANG_DE), mGradidoCurrentBalance(0), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
//crypto_shorthash(mPasswordHashed, (const unsigned char*)password, strlen(password), *ServerConfig::g_ServerCryptoKey);
|
||||
//memset(mPasswordHashed, 0, crypto_shorthash_BYTES);
|
||||
@ -241,7 +242,8 @@ User::User(const char* email)
|
||||
}
|
||||
|
||||
User::User(int user_id)
|
||||
: mState(USER_EMPTY), mDBId(user_id), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(user_id), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false),
|
||||
mLanguage(LANG_DE), mGradidoCurrentBalance(0), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
auto cm = ConnectionManager::getInstance();
|
||||
auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER);
|
||||
@ -299,7 +301,8 @@ User::User(int user_id)
|
||||
}
|
||||
|
||||
User::User(const unsigned char* pubkey_array)
|
||||
: mState(USER_EMPTY), mDBId(0), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false), mLanguage(LANG_DE), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
: mState(USER_EMPTY), mDBId(0), mPasswordHashed(0), mPrivateKey(nullptr), mEmailChecked(false),
|
||||
mLanguage(LANG_DE), mGradidoCurrentBalance(0), mCryptoKey(nullptr), mReferenceCount(1)
|
||||
{
|
||||
//crypto_shorthash(mPasswordHashed, (const unsigned char*)password, strlen(password), *ServerConfig::g_ServerCryptoKey);
|
||||
//memset(mPasswordHashed, 0, crypto_shorthash_BYTES);
|
||||
@ -524,6 +527,13 @@ bool User::validatePwd(const std::string& pwd, ErrorList* validationErrorsToPrin
|
||||
throw Poco::Exception("crypto_shorthash_BYTES != sizeof(User::passwordHashed)");
|
||||
}
|
||||
User::passwordHashed pwdHashed;
|
||||
if (!ServerConfig::g_ServerCryptoKey) {
|
||||
if (validationErrorsToPrint) {
|
||||
validationErrorsToPrint->addError(new Error("User::validatePwd", "server crypto key not set"));
|
||||
}
|
||||
mm->releaseMemory(cmpCryptoKey);
|
||||
return false;
|
||||
}
|
||||
crypto_shorthash((unsigned char*)&pwdHashed, *cmpCryptoKey, crypto_box_SEEDBYTES, *ServerConfig::g_ServerCryptoKey);
|
||||
lock();
|
||||
if (pwdHashed == mPasswordHashed) {
|
||||
@ -676,7 +686,7 @@ MemoryBin* User::createCryptoKey(const std::string& password)
|
||||
|
||||
void User::fakeCreateCryptoKey()
|
||||
{
|
||||
Poco::Thread::sleep(820);
|
||||
Poco::Thread::sleep(ServerConfig::g_FakeLoginSleepTime);
|
||||
}
|
||||
|
||||
bool User::generateKeys(bool savePrivkey, const std::string& passphrase, Session* session)
|
||||
|
||||
@ -82,6 +82,7 @@ public:
|
||||
inline const char* getFirstName() const { return mFirstName.data(); }
|
||||
inline const char* getLastName() const { return mLastName.data(); }
|
||||
inline int getDBId() const { return mDBId; }
|
||||
inline int getBalance() { lock(); int balance = mGradidoCurrentBalance; unlock(); return balance; }
|
||||
inline std::string getPublicKeyHex() { lock(); std::string pubkeyHex = mPublicHex; unlock(); return pubkeyHex; }
|
||||
inline const unsigned char* getPublicKey() { return mPublicKey; }
|
||||
inline Languages getLanguage() { lock(); Languages lang = mLanguage; unlock(); return lang; }
|
||||
@ -92,6 +93,7 @@ public:
|
||||
UserStates getUserState();
|
||||
|
||||
void setLanguage(Languages lang) { lock(); mLanguage = lang; unlock(); }
|
||||
inline void setBalance(int balance) { lock(); mGradidoCurrentBalance = balance; unlock(); }
|
||||
void setEmailChecked();
|
||||
bool isEmptyPassword();
|
||||
bool setNewPassword(const std::string& newPassword);
|
||||
@ -150,6 +152,9 @@ private:
|
||||
Languages mLanguage;
|
||||
|
||||
// ************************ DB FIELDS END ******************************
|
||||
|
||||
int mGradidoCurrentBalance;
|
||||
|
||||
// crypto key as obfus array
|
||||
// only in memory, if user has typed in password
|
||||
MemoryBin* mCryptoKey;
|
||||
|
||||
@ -17,8 +17,10 @@ enum PageState {
|
||||
|
||||
%>
|
||||
<%%
|
||||
const char* pageName = "Überprüfe Transaktion";
|
||||
const char* pageName = gettext("Überprüfe Transaktion");
|
||||
auto accountUser = mSession->getUser();
|
||||
auto userBalance = accountUser->getBalance();
|
||||
std::string memo = "";
|
||||
bool hasErrors = false;
|
||||
bool enableLogout = true;
|
||||
|
||||
@ -31,7 +33,7 @@ enum PageState {
|
||||
if(!accountUser->hasCryptoKey()) {
|
||||
auto pwd = form.get("sign-password", "");
|
||||
if(!mSession->isPwdValid(pwd)) {
|
||||
addError(new Error("Passwort", "Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung"));
|
||||
addError(new Error(gettext("Passwort"), gettext("Das Passwort stimmt nicht. Bitte verwende dein Passwort von der Registrierung")));
|
||||
hasErrors = true;
|
||||
}
|
||||
}
|
||||
@ -62,60 +64,115 @@ enum PageState {
|
||||
|
||||
|
||||
|
||||
%><%@ include file="header.cpsp" %><%@ include file="navi.cpsp" %>
|
||||
<div class="grd_container">
|
||||
<h1>Eine Transaktion prüfen</h1>
|
||||
<%= getErrorsHtml() %>
|
||||
%><%@ include file="header_navi.cpsp" %>
|
||||
<div class="col-md-10 equel-grid mb-3">
|
||||
<small class="text-gray d-block mt-3">
|
||||
<% if(sumTransactions > 0 && sumTransactions - notReadyTransactions != 1) { %>
|
||||
<% if(notReadyTransactions > 0) { %>
|
||||
<pre><%= sumTransactions - notReadyTransactions %> von <%= sumTransactions %> Transaktionen sind bereit zum prüfen</pre>
|
||||
<%= sumTransactions - notReadyTransactions %> <%= gettext("von") %> <%= sumTransactions %> <%= gettext("Transaktionen sind bereit zum bestätigen") %>
|
||||
<% } else { %>
|
||||
<pre><%= sumTransactions %> Transaktionen warten darauf überprüft zu werden.</pre>
|
||||
<%= sumTransactions %> <%= gettext("Transaktionen warten darauf bestätigt zu werden.") %>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% if(state == PAGE_NO_TRANSACTIONS) { %>
|
||||
<div class="grd_text-max-width">
|
||||
<% if(sumTransactions == 0) { %>
|
||||
<div class="grd_text">Es gibt zurzeit keine Transaktionen zum überprüfen</div>
|
||||
<%= gettext("Es gibt zurzeit keine Transaktionen zum bestätigen") %>
|
||||
<% } else { %>
|
||||
<div class="grd_text">Transaktion(en) werden noch vorbereitet, bitte lade die Seite in wenigen Augenblicken erneut.</div>
|
||||
<%= gettext("Transaktion(en) werden noch vorbereitet, bitte lade die Seite in wenigen Augenblicken erneut.") %>
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
<% } else if(state == PAGE_TRANSACTION_CREATION) {
|
||||
auto creationTransaction = processingTransaction->getCreationTransaction();
|
||||
auto transactionUser = creationTransaction->getUser();
|
||||
|
||||
%>
|
||||
<div class="grd_text-max-width">
|
||||
<h2>Schöpfungstransaktion</h2>
|
||||
<b>Memo: </b>
|
||||
<p><%= creationTransaction->getMemo() %></p>
|
||||
<b>Empfänger: </b>
|
||||
<% if(transactionUser) { %>
|
||||
<p class="grd_small"><%= transactionUser->getFirstName() %> <%= transactionUser->getLastName() %></p>
|
||||
<p class="grd_small"><%= transactionUser->getEmail() %></p>
|
||||
<% } else { %>
|
||||
<p class="grd_small"><%= creationTransaction->getPublicHex() %></p>
|
||||
<% } %>
|
||||
<b>Summe: </b>
|
||||
<%= creationTransaction->getAmountString() %> Gradido
|
||||
<form >
|
||||
Unterschreiben mit aktuellem Account?<br>
|
||||
<p class="grd_small"><%= accountUser->getFirstName() %> <%= accountUser->getLastName() %></p>
|
||||
<p class="grd_small"><%= accountUser->getEmail() %></p>
|
||||
<% // TODO: additional password check %>
|
||||
<% if(!accountUser->hasCryptoKey()) {%>
|
||||
<p>Ich brauche nochmal dein Passwort</p>
|
||||
<p class="grd_small">
|
||||
<label for="sign-password">Passwort</label>
|
||||
<input id="sign-password" type="password" name="sign-password"/>
|
||||
</p>
|
||||
<% } %>
|
||||
<input class="grd-form-bn grd-form-bn-succeed grd_clickable" type="submit" name="ok" value="Transaktion unterzeichnen">
|
||||
<input class="grd-form-bn grd-form-bn-discard grd_clickable" type="submit" name="abort" value="Transaktion verwerfen">
|
||||
</form>
|
||||
</div>
|
||||
<% } %>
|
||||
<% } %>
|
||||
</small>
|
||||
</div>
|
||||
<%@ include file="footer.cpsp" %>
|
||||
<% if(state != PAGE_NO_TRANSACTIONS) { %>
|
||||
<div class="col-md-10 equel-grid">
|
||||
<div class="grid">
|
||||
<p class="grid-header"><%= gettext("Transaktion Unterzeichnen") %></p>
|
||||
<div class="grid-body">
|
||||
<div class="item-wrapper">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-10 mx-auto">
|
||||
<% if(state == PAGE_TRANSACTION_TRANSFER) {
|
||||
auto transferTransaction = processingTransaction->getTransferTransaction();
|
||||
memo = transferTransaction->getMemo();
|
||||
%>
|
||||
<p class="card-title ml-n1 mb-3"><%= gettext("Überweisung") %></p>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table info-table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr><th><%= gettext("Konto") %></th><th><%= gettext("Gradido") %></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% for(int i = 0; i < transferTransaction->getKontoTableSize(); i++) { %>
|
||||
<tr>
|
||||
<%= transferTransaction->getKontoNameCell(i) %>
|
||||
<%= transferTransaction->getAmountCell(i) %>
|
||||
</tr>
|
||||
<% } %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<% } else if(state == PAGE_TRANSACTION_CREATION) {
|
||||
auto creationTransaction = processingTransaction->getCreationTransaction();
|
||||
auto transactionUser = creationTransaction->getUser();
|
||||
memo = creationTransaction->getMemo();
|
||||
%>
|
||||
<p class="card-title ml-n1 mb-3"><%= gettext("Schöpfung") %></p>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table info-table table-striped table-bordered">
|
||||
<thead>
|
||||
<tr><th><%= gettext("Konto") %></th><th><%= gettext("Gradido") %></th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<% if(transactionUser) { %>
|
||||
<td><%= transactionUser->getFirstName() %> <%= transactionUser->getLastName() %> <<%= transactionUser->getEmail() %>></td>
|
||||
<% } else { %>
|
||||
<td class="small">0x<%= creationTransaction->getPublicHex() %></td>
|
||||
<% } %>
|
||||
<td class="grd-success-color"><%= creationTransaction->getAmountString() %> GDD</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<% } %>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table info-table table-bordered table-auto-break">
|
||||
<thead><tr><th><%= gettext("Aktives Konto") %></th></tr></thead>
|
||||
<tbody><tr><td><%= accountUser->getFirstName() %> <%= accountUser->getLastName() %> <<%= accountUser->getEmail() %>></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="table-responsive mb-4">
|
||||
<table class="table info-table table-bordered table-auto-break tab-container">
|
||||
<thead><tr><th><%= gettext("Verwendungszweck") %></th></tr></thead>
|
||||
<tbody><tr>
|
||||
<td class="tab-content"><%= memo %></td></tr></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form>
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-10 mx-auto">
|
||||
<% if(!accountUser->hasCryptoKey()) {%>
|
||||
<div class="form-group">
|
||||
<label for="sign-password"><%= gettext("Ich brauche nochmal dein Passwort") %></label>
|
||||
<input type="password" class="form-control" id="sign-password" name="sign-password" placeholder="<%= gettext("Passwort") %>">
|
||||
</div>
|
||||
<% } %>
|
||||
<button type="submit" class="btn btn-sm btn-primary" name="ok" value="ok">
|
||||
<i class="mdi mdi-signature-freehand"></i>
|
||||
<%= gettext("Transaktion unterzeichnen") %>
|
||||
</button>
|
||||
<button type="submit" class="btn btn-sm btn-warning" name="abort" value="abort">
|
||||
<i class="mdi mdi-delete"></i>
|
||||
<%= gettext("Transaktion verwerfen") %>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %><%@ include file="footer_ripple.cpsp" %>
|
||||
41
src/cpsp/footer_ripple.cpsp
Normal file
41
src/cpsp/footer_ripple.cpsp
Normal file
@ -0,0 +1,41 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- content viewport ends -->
|
||||
<!-- partial:partials/_footer.html -->
|
||||
<footer class="footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-center text-sm-right order-sm-1">
|
||||
<ul class="text-gray">
|
||||
<li><a href="#">Terms of use</a></li>
|
||||
<li><a href="#">Privacy Policy</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-6 text-center text-sm-left mt-3 mt-sm-0">
|
||||
<small class="text-muted d-block">Copyright © 2019 Gradido</small>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- partial -->
|
||||
</div>
|
||||
<!-- page content ends -->
|
||||
</div>
|
||||
<div class="grd-time-used dev-info">
|
||||
<%= mTimeProfiler.string() %>
|
||||
</div>
|
||||
<!--page body ends -->
|
||||
<!-- SCRIPT LOADING START FORM HERE /////////////-->
|
||||
<!-- plugins:js -->
|
||||
<!--<script src="../../../assets/vendors/js/core.js"></script>-->
|
||||
<!--<script src="../../../assets/vendors/js/vendor.addons.js"></script>-->
|
||||
<!-- endinject -->
|
||||
<!-- Vendor Js For This Page Ends-->
|
||||
<!--<script src="../../../assets/vendors/chartjs/Chart.min.js"></script>-->
|
||||
<!-- Vendor Js For This Page Ends-->
|
||||
<!-- build:js -->
|
||||
<!--<script src="../../../assets/js/template.js"></script>-->
|
||||
<script src="<%= ServerConfig::g_php_serverPath %>/js/basic.js"></script>
|
||||
<!--<script src="../../../assets/js/dashboard.js"></script>-->
|
||||
<!-- endbuild -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -9,10 +9,10 @@
|
||||
<title>Gradido Login Server: <%= pageName %></title>
|
||||
<link rel="stylesheet" type="text/css" href="<%= ServerConfig::g_php_serverPath %>css/loginServer/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<body class="header-fixed">
|
||||
<div class="versionstring dev-info">
|
||||
<p class="grd_small">Login Server in Entwicklung</p>
|
||||
<p class="grd_small">Alpha 0.8.1</p>
|
||||
<p class="grd_small">Alpha <%= ServerConfig::g_versionString %></p>
|
||||
</div>
|
||||
<!--<nav class="grd-left-bar expanded" data-topbar role="navigation">
|
||||
<div class="grd-left-bar-section">
|
||||
|
||||
91
src/cpsp/header_navi.cpsp
Normal file
91
src/cpsp/header_navi.cpsp
Normal file
@ -0,0 +1,91 @@
|
||||
<%!
|
||||
#include "../ServerConfig.h"
|
||||
#include "../model/TransactionBase.h"
|
||||
%>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>Gradido Login Server: <%= pageName %></title>
|
||||
<link rel="stylesheet" type="text/css" href="<%= ServerConfig::g_php_serverPath %>css/rippleUI/style.css">
|
||||
<link rel="stylesheet" type="text/css" href="<%= ServerConfig::g_php_serverPath %>css/materialdesignicons.min.css">
|
||||
</head>
|
||||
<body class="header-fixed">
|
||||
<div class="versionstring dev-info">
|
||||
<p class="grd_small">Login Server in Entwicklung</p>
|
||||
<p class="grd_small">Alpha <%= ServerConfig::g_versionString %></p>
|
||||
</div>
|
||||
<nav class="t-header">
|
||||
<div class="t-header-brand-wrapper">
|
||||
<a href="<%= ServerConfig::g_php_serverPath %>">
|
||||
<img class="logo" src="<%= ServerConfig::g_php_serverPath %>img/logo_schrift_half.webp" alt="Logo">
|
||||
<img class="logo-mini" src="<%= ServerConfig::g_php_serverPath %>img/logo_half.webp" alt="Logo">
|
||||
</a>
|
||||
<button class="t-header-toggler t-header-desk-toggler d-none d-lg-block">
|
||||
<svg class="logo" viewBox="0 0 200 200">
|
||||
<path class="top" d="
|
||||
M 40, 80
|
||||
C 40, 80 120, 80 140, 80
|
||||
C180, 80 180, 20 90, 80
|
||||
C 60,100 30,120 30,120
|
||||
"></path>
|
||||
<path class="middle" d="
|
||||
M 40,100
|
||||
L140,100
|
||||
"></path>
|
||||
<path class="bottom" d="
|
||||
M 40,120
|
||||
C 40,120 120,120 140,120
|
||||
C180,120 180,180 90,120
|
||||
C 60,100 30, 80 30, 80
|
||||
"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="t-header-content-wrapper">
|
||||
<div class="t-header-content">
|
||||
<button class="t-header-toggler t-header-mobile-toggler d-block d-lg-none">
|
||||
<i class="mdi mdi-menu"></i>
|
||||
</button>
|
||||
<div class="flash-messages" style="margin-left:20px; margin-top:30px;"><%= getErrorsHtml() %></div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="page-body">
|
||||
<!-- partial:partials/_sidebar.html -->
|
||||
<div class="sidebar">
|
||||
<ul class="navigation-menu">
|
||||
<li>
|
||||
<a href="<%= ServerConfig::g_php_serverPath %>state-balances/overview" title="Kontoübersicht">
|
||||
<span class="link-title"><%= TransactionBase::amountToString(userBalance) %> GDD</span>
|
||||
<i class="mdi mdi-wallet-outline link-icon"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<%= ServerConfig::g_php_serverPath %>">
|
||||
<span class="link-title">Startseite</span>
|
||||
<i class="mdi mdi-gauge link-icon"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<%= ServerConfig::g_php_serverPath %>transaction-send-coins/create">
|
||||
<span class="link-title">Überweisen</span>
|
||||
<i class="mdi mdi-bank-transfer-out link-icon"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="page-content-wrapper">
|
||||
<div class="page-content-wrapper-inner">
|
||||
<div class="viewport-header">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb has-arrow">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="<%= ServerConfig::g_php_serverPath %>">Startseite</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page"><%= pageName %></li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="content-viewport">
|
||||
@ -50,7 +50,7 @@ label:not(.grd_radio_label) {
|
||||
<body>
|
||||
<div class="versionstring dev-info">
|
||||
<p class="grd_small">Login Server in Entwicklung</p>
|
||||
<p class="grd_small">Alpha 0.8.1</p>
|
||||
<p class="grd_small">Alpha <%= ServerConfig::g_versionString %></p>
|
||||
</div>
|
||||
<!--<nav class="grd-left-bar expanded" data-topbar role="navigation">
|
||||
<div class="grd-left-bar-section">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user