update pages and session for using caller_url (for vue-client and maybe other later)

This commit is contained in:
einhornimmond 2021-01-25 15:55:16 +01:00 committed by Ulf Gebhardt
parent 01d00ae309
commit 5bbc7cace5
No known key found for this signature in database
GPG Key ID: 81308EFE29ABFEBD
8 changed files with 348 additions and 174 deletions

View File

@ -54,6 +54,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
std::string memo = "";
bool hasErrors = false;
bool enableLogout = true;
bool enableSign = true;
int skip_count = 0;
int pending_task_id = 0;
@ -63,7 +64,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
}
PageState state = PAGE_NO_TRANSACTIONS;
if(!user_model->isEmailChecked()) {
addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!")));
hasErrors = true;
@ -204,6 +205,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
addError(new Error(gettext("Passwort"), gettext("Gespeicherte Daten sind korrupt!")));
hasErrors = true;
state = PAGE_USER_DATA_CORRUPTED;
enableSign = false;
break;
case -3:
addError(new Error(gettext("Passwort"), gettext("Passwortprüfung läuft schon, bitte versuche es in 1-2 Minuten erneut.")));
@ -265,10 +267,12 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
if(sumTransactions == 0)
{
auto lastExternReferer = mSession->getLastReferer();
auto callerUri = mSession->getCallerUri();
//lastExternReferer = "";
account_user->reload();
if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) {
//printf("last extern referer: %s\n", lastExternReferer.data());
if(callerUri != "") {
response.redirect(callerUri);
} else if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) {
response.redirect(lastExternReferer);
} else if(!account_user->getModel()->getGroupId()) {
response.redirect(getBaseUrl() + "/userUpdateGroup");
@ -294,6 +298,14 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
//community_server_base_path
break;
}
if(model::gradido::TRANSACTION_GROUP_MEMBER_UPDATE != transactionType)
{
if(!user_model->isEmailChecked()) {
addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!")));
hasErrors = true;
enableSign = false;
}
}
}
@ -475,7 +487,6 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << " </div>";
// end include header_navi_chr.cpsp
responseStream << "\n";
<<<<<<< HEAD
/*
#line 126 "F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\checkTransaction.cpsp"
if(transaction_finalize_run) { responseStream << "\n";
@ -564,157 +575,157 @@ 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 203 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 212 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(sumTransactions == 0) { responseStream << "\n";
responseStream << "\t\t";
#line 204 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Es gibt zurzeit keine Transaktionen zum best&auml;tigen") );
responseStream << "\n";
responseStream << " ";
#line 205 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 214 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\t\n";
responseStream << "\t\t<p>";
#line 206 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 215 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( sumTransactions );
responseStream << " ";
#line 206 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 215 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktionen warten darauf best&auml;tigt zu werden.") );
responseStream << "</p>\n";
responseStream << "\t\t";
#line 207 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 216 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(skip_count > 0) { responseStream << "\n";
responseStream << "\t\t\t<p>";
#line 208 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( skip_count );
responseStream << " ";
#line 208 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktionen &uuml;bersprungen.") );
responseStream << "</p>\n";
responseStream << "\t\t";
#line 209 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 218 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t";
#line 210 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 219 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t</small>\n";
responseStream << "</div>\n";
responseStream << "<div class=\"content-container main-container\">\n";
responseStream << "\t<div class=\"action-form\">\n";
responseStream << "\t\t<p class=\"form-header\">";
#line 215 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 224 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion Unterzeichnen") );
responseStream << "</p>\n";
responseStream << "\t\t<div class=\"form-content\">\n";
responseStream << "\t\t";
#line 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 226 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(state == PAGE_TRANSACTION_TRANSFER) {
auto transferTransaction = transaction_body->getTransferTransaction();
responseStream << "\n";
responseStream << "\t\t\t<p>";
#line 220 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 229 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("&Uuml;berweisung") );
responseStream << "</p>\n";
responseStream << "\t\t\t<div class=\"content-table\">\n";
responseStream << "\t\t\t <div class=\"content-row content-row-header\">\n";
responseStream << "\t\t\t\t<span class=\"content-cell\">";
#line 223 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 232 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Konto") );
responseStream << "</span>\n";
responseStream << "\t\t\t\t<span class=\"content-cell\">";
#line 224 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 233 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Gradido") );
responseStream << "</span>\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t ";
#line 226 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 235 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
for(int i = 0; i < transferTransaction->getKontoTableSize(); i++) { responseStream << "\t\t\t\t\t\n";
responseStream << "\t\t\t\t\t";
#line 227 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 236 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if((i+1) % 2 == 0) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<div class=\"content-row content-row\">\n";
responseStream << "\t\t\t\t\t";
#line 229 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 238 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<div class=\"content-row content-row-bg\">\n";
responseStream << "\t\t\t\t\t";
#line 231 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 240 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t\t";
#line 232 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transferTransaction->getKontoNameCell(i) );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t";
#line 233 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 242 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transferTransaction->getAmountCell(i) );
responseStream << "\n";
responseStream << "\t\t\t\t\t</div>\n";
responseStream << "\t\t\t ";
#line 235 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t</div>\n";
responseStream << "\t\t\t ";
#line 237 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 246 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else if(PAGE_TRANSACTION_CREATION == state) {
auto creationTransaction = transaction_body->getCreationTransaction();
auto transactionUser = creationTransaction->getUser();
responseStream << "\n";
responseStream << "\t\t\t\t<p>";
#line 241 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 250 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Sch&ouml;pfung") );
responseStream << "</p>\n";
responseStream << "\t\t\t\t<div class=\"content-table\">\n";
responseStream << "\t\t\t\t <div class=\"content-row content-row-header\">\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 253 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Konto") );
responseStream << "</span>\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 245 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 254 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Zieldatum") );
responseStream << "</span>\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 246 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 255 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Gradido") );
responseStream << "</span>\n";
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t <div class=\"content-row content-row-bg\">\n";
responseStream << "\t\t\t\t\t";
#line 249 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 258 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(!transactionUser.isNull()) {
auto user_model = transactionUser->getModel();
responseStream << "\n";
responseStream << "\t\t\t\t\t\t<span class=\"content-cell\">";
#line 252 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( user_model->getFirstName() );
responseStream << " ";
#line 252 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( user_model->getLastName() );
responseStream << " &lt;";
#line 252 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( user_model->getEmail() );
responseStream << "&gt;</span>\n";
responseStream << "\t\t\t\t\t";
#line 253 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 262 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<span class=\"content-cell\">0x";
#line 254 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 263 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( creationTransaction->getPublicHex() );
responseStream << "</span>\n";
responseStream << "\t\t\t\t\t";
#line 255 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 264 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 256 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 265 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( creationTransaction->getTargetDateString() );
responseStream << "</span>\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell success-color\">";
#line 257 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 266 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( creationTransaction->getAmountString() );
responseStream << " GDD</span>\n";
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t</div>\n";
responseStream << "\t\t ";
#line 260 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 269 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else if(PAGE_TRANSACTION_GROUP_ADD_MEMBER == state) {
auto groupMemberUpdateTransaction = transaction_body->getGroupMemberUpdate();
auto groups = controller::Group::load(groupMemberUpdateTransaction->getTargetGroupAlias());
@ -729,112 +740,112 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
}
responseStream << "\n";
responseStream << "\t\t\t <p>";
#line 273 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 282 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Benutzer zu einer Gruppe hinzufügen") );
responseStream << "</p>\n";
responseStream << "\t\t\t <div class=\"content-table\">\n";
responseStream << "\t\t\t\t<p>";
#line 275 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 284 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(!user.isNull()) { responseStream << "\n";
responseStream << "\t\t\t\t\t<b>Benutzer:</b>&nbsp;";
#line 276 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 285 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( user->getEmailWithNames() );
responseStream << "\n";
responseStream << "\t\t\t\t";
#line 277 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t<b>Account public key:</b>&nbsp;";
#line 278 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 287 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( groupMemberUpdateTransaction->getPublicKeyHex() );
responseStream << "\n";
responseStream << "\t\t\t\t";
#line 279 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 288 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "</p>\n";
responseStream << "\t\t\t\t";
#line 280 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 289 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(!group_model.isNull()) { responseStream << "\n";
responseStream << "\t\t\t\t\t<p><b>";
#line 281 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 290 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Gruppe") );
responseStream << ":</b></p>\n";
responseStream << "\t\t\t\t\t<ul>\n";
responseStream << "\t\t\t\t\t\t<li>";
#line 283 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 292 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Name") );
responseStream << ": ";
#line 283 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 292 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( group_model->getName() );
responseStream << "</li>\n";
responseStream << "\t\t\t\t\t\t<li>";
#line 284 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 293 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Alias") );
responseStream << ": ";
#line 284 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 293 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( group_model->getAlias() );
responseStream << "</li>\n";
responseStream << "\t\t\t\t\t\t<li>";
#line 285 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 294 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Url") );
responseStream << ": <a href=\"";
#line 285 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 294 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( group_model->getUrl() );
responseStream << "/pages/visitor\" target=\"_blank\">";
#line 285 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 294 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( group_model->getUrl() );
responseStream << "</a></li>\n";
responseStream << "\t\t\t\t\t\t<li>";
#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 295 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( group_model->getDescription() );
responseStream << "</li>\n";
responseStream << "\t\t\t\t\t</ul>\n";
responseStream << "\t\t\t\t";
#line 288 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 297 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t";
#line 289 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 298 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Unbekannte Gruppe") );
responseStream << "\n";
responseStream << "\t\t\t\t";
#line 290 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 299 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t";
#line 291 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Es haben bereits ") );
#line 291 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( std::to_string(transaction->getSignCount()) );
#line 291 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 300 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext(" unterzeichnet") );
responseStream << "\n";
responseStream << "\t\t\t </div>\n";
responseStream << "\t\t\t \n";
responseStream << "\t\t\t ";
#line 294 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else if(PAGE_USER_DATA_CORRUPTED == state) { responseStream << "\n";
responseStream << "\t\t\t\t<p class=\"alert-color\">";
#line 295 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 304 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Es gibt ein Problem mit deinen gespeicherten Daten, bitte wende dich an den"));
responseStream << "<a href=\"mailto:";
#line 295 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 304 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( em->getAdminReceiver());
responseStream << "?subject=Corrupt User Data&amp;body=Hallo Dario,%0D%0A%0D%0Ameine Benutzer Daten sind korrupt.%0D%0Akannst du das prüfen?%0D%0A%0D%0AMit freundlichen Grüßen%0D%0A\">";
#line 295 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 304 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << (gettext("Support") );
responseStream << "</a></p>\n";
responseStream << "\t\t\t ";
#line 296 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t ";
#line 297 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 306 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(PAGE_NO_TRANSACTIONS == state) { responseStream << "\n";
responseStream << "\t\t\t\t<a href=\"";
#line 298 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 307 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( ServerConfig::g_php_serverPath );
responseStream << "\">";
#line 298 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 307 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Zur&uuml;ck") );
responseStream << "</a>\n";
responseStream << "\t\t\t ";
#line 299 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 308 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t<div class=\"content-table\">\n";
responseStream << "\t\t\t\t <div class=\"content-row content-row-header\">\n";
@ -842,7 +853,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t <div class=\"content-row\">\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 314 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( user_model->getNameWithEmailHtml() );
responseStream << "</span>\n";
responseStream << "\t\t\t\t </div>\n";
@ -853,62 +864,62 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t <div class=\"content-row content-row-bg\">\n";
responseStream << "\t\t\t\t\t<span class=\"content-cell\">";
#line 313 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 322 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( memo );
responseStream << "</span>\n";
responseStream << "\t\t\t\t </div>\n";
responseStream << "\t\t\t\t</div>\n";
responseStream << "\t\t\t\t<form>\n";
responseStream << "\t\t\t\t\t";
#line 317 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 326 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(transaction) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<input type=\"hidden\" name=\"pending-task-id\" value=\"";
#line 318 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 327 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( transaction->getModel()->getID() );
responseStream << "\">\n";
responseStream << "\t\t\t\t\t";
#line 319 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 328 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t<input type=\"hidden\" name=\"skip-count\" value=\"";
#line 320 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 329 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( skip_count );
responseStream << "\">\n";
responseStream << "\t\t\t\t\t";
#line 321 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 330 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(!account_user->hasPassword()) { responseStream << "\n";
responseStream << "\t\t\t\t\t <div class=\"form-group\">\n";
responseStream << "\t\t\t\t\t\t <label for=\"sign-password\">";
#line 323 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 332 "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\t <input type=\"password\" class=\"form-control\" id=\"sign-password\" name=\"sign-password\" placeholder=\"";
#line 324 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 333 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Passwort") );
responseStream << "\">\n";
responseStream << "\t\t\t\t\t </div>\n";
responseStream << "\t\t\t\t\t";
#line 326 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 335 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t";
#line 327 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(PAGE_USER_DATA_CORRUPTED != state && user_model->isEmailChecked()) { responseStream << "\n";
#line 336 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(enableSign && !hasErrors) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<button type=\"submit\" class=\"form-button\" name=\"ok\" value=\"ok\">\n";
responseStream << "\t\t\t\t\t\t\t<i class=\"material-icons-outlined\">verified_user</i>\n";
responseStream << "\t\t\t\t\t\t\t";
#line 330 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 339 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion unterzeichnen") );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t</button>\n";
responseStream << "\t\t\t\t\t";
#line 332 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 341 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t\t";
#line 333 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 342 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
if(transaction_removeable) { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<button type=\"submit\" class=\"form-button button-cancel\" name=\"abort\" value=\"abort\">\n";
responseStream << "\t\t\t\t\t\t\t<i class=\"material-icons-outlined\">delete</i>\n";
responseStream << "\t\t\t\t\t\t\t";
#line 336 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 345 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion verwerfen") );
responseStream << "\n";
responseStream << "\t\t\t\t</button>\n";
@ -925,21 +936,21 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\t\t\t</form>\n";
responseStream << "\t\t\t\t\t\t</button>\n";
responseStream << "\t\t\t\t\t";
#line 338 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 347 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t\t\t<button type=\"submit\" class=\"form-button button-cancel\" name=\"skip\" value=\"skip\">\n";
responseStream << "\t\t\t\t\t\t\t<i class=\"material-icons-outlined\">debug-step-over</i>\n";
responseStream << "\t\t\t\t\t\t\t";
#line 341 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 350 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
responseStream << ( gettext("Transaktion &uuml;berspringen") );
responseStream << "\n";
responseStream << "\t\t\t\t\t\t</button>\n";
responseStream << "\t\t\t\t\t";
#line 343 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 352 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t</form>\n";
responseStream << "\t\t\t";
#line 345 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
#line 354 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t</div>\n";
responseStream << "\t</div>\n";

View File

@ -11,12 +11,15 @@
#include "Poco/Net/HTTPCookie.h"
#include "Poco/Net/HTTPServerParams.h"
#include "Poco/URI.h"
#include "Poco/Logger.h"
#include "../SingletonManager/SessionManager.h"
#include "../SingletonManager/LanguageManager.h"
#include "../SingletonManager/ErrorManager.h"
#include "../lib/JsonRequest.h"
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp"
#include "../ServerConfig.h"
@ -36,12 +39,16 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
if (_compressResponse) response.set("Content-Encoding", "gzip");
Poco::Net::HTMLForm form(request, request.stream());
#line 19 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 22 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
const char* pageName = "Login";
auto sm = SessionManager::getInstance();
auto lm = LanguageManager::getInstance();
auto em = ErrorManager::getInstance();
auto uri = Poco::URI(request.getURI());
auto query_parameter = uri.getQueryParameters();
std::string caller_uri = "";
auto lang = chooseLanguage(request);
//printf("choose language return: %d\n", lang);
@ -58,7 +65,10 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
*/
if(!form.empty()) {
caller_uri = form.get("caller_uri", "");
printf("form.get: caller_uri: %s\n", caller_uri.data());
bool langUpdatedByBtn = false;
auto langBtn = form.get("lang", "");
if(langBtn != "") {
@ -81,7 +91,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
*/
auto email = form.get("login-email", "");
auto password = form.get("login-password", "");
/*
if(email != "" && password != "") {
//auto session = sm->getSession(request);
//if(!mSession) mSession = sm->findByEmail(email);
@ -105,7 +115,43 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
response.addCookie(mSession->getLoginCookie());
} else {
langCatalog = mSession->getLanguageCatalog();
*/
if(mSession) {
printf("start with session: %d\n", mSession->getHandle());
} else {
printf("start without session\n");
}
if(!mSession) {
mSession = sm->getNewSession();
mSession->setLanguageCatalog(langCatalog);
// get language
// first check url, second check language header
// for debugging client ip
auto client_ip = request.clientAddress();
std::string clientIpString = "client ip: ";
clientIpString += client_ip.toString();
Poco::Logger::get("requestLog").information(clientIpString);
// debugging end
auto user_host = request.clientAddress().host();
mSession->setClientIp(user_host);
// TODO: check for valid url
if(caller_uri != "") {
mSession->setCallerUri(caller_uri);
}
response.addCookie(mSession->getLoginCookie());
} else {
langCatalog = mSession->getLanguageCatalog();
if(caller_uri == "") {
caller_uri = mSession->getCallerUri();
}
}
printf("after session: caller_uri: %s\n", caller_uri.data());
if(email != "" && password != "") {
UserState user_state;
try {
user_state = mSession->loadUser(email, password);
@ -162,41 +208,47 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
case USER_NO_PRIVATE_KEY:
case USER_COMPLETE:
case USER_EMAIL_NOT_ACTIVATED:
for(auto it = query_parameter.begin(); it != query_parameter.end(); it++) {
printf("query parameter: %s: %s\n", it->first.data(), it->second.data());
if(it->first == "caller_uri") {
std::string redirect_url = it->second;
redirect_url += "?session_id=" + std::to_string(mSession->getHandle());
response.redirect(redirect_url);
}
}
auto referer = request.find("Referer");
std::string refererString;
if (referer != request.end()) {
refererString = referer->second;
}
if(lastExternReferer != "") {
if(caller_uri != "")
{
std::string redirect_url = caller_uri;
redirect_url += "?session_id=" + std::to_string(mSession->getHandle());
response.redirect(redirect_url);
}
else if(lastExternReferer != "") {
printf("redirect to: %s (last extern referer)\n", lastExternReferer.data());
response.redirect(lastExternReferer);
} else if(refererString != "" && refererString != "/" &&
}
else if(refererString != "" && refererString != "/" &&
refererString.find("login") == std::string::npos &&
refererString.find("logout") == std::string::npos &&
refererString.find("user_delete") == std::string::npos &&
refererString != getBaseUrl() + request.getURI() &&
refererString != user->getGroupBaseUrl() + request.getURI()) {
refererString != user->getGroupBaseUrl() + request.getURI())
{
std::string uri = request.getURI();
printf("request uri: %s, redirect to: %s\n", uri.data(), refererString.data());
response.redirect(refererString);
} else {
}
else
{
if(user->getModel()->getGroupId() != 0) {
printf("redirect to: %s/\n", user->getGroupBaseUrl().data());
auto group = controller::Group::load(user->getModel()->getGroupId());
if(!group.isNull() && group->getModel()) {
JsonRequest json_request(group->getModel()->getUrl(), 443);
Poco::JSON::Object params;
params.set("session_id", mSession->getHandle());
params.set("method", "setSessionId");
auto result = json_request.request("setSessionId", params);
if(JSON_REQUEST_RETURN_OK != result) {
addError(new Error("login", "error setting session id"));
addError(new ParamError("login", "community server url", group->getModel()->getUrl()));
getErrors(&json_request);
sendErrorsAsEmail();
}
}
response.redirect(user->getGroupBaseUrl() + "/");
} else {
response.redirect("https://" + request.getHost() + "/");
@ -205,7 +257,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
return;
}
} else if(!langUpdatedByBtn) {
} else if(!langUpdatedByBtn && caller_uri == "") {
addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("Username and password are needed!")), false);
}
@ -285,11 +337,11 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " </div>";
// end include header.cpsp
responseStream << "\n";
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 229 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\n";
responseStream << "<!--<input type=\"hidden\" name=\"lang\" value=\"";
#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 230 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( LanguageManager::keyForLanguage(lang) );
responseStream << "\">-->\n";
responseStream << "<div class=\"center-form-container\">\n";
@ -323,22 +375,22 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << "\n";
responseStream << " <div class=\"center-form-form\">\n";
responseStream << "\t\t<form action=\"";
#line 202 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 234 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( form_action_url );
responseStream << "\" method=\"POST\">\n";
responseStream << "\t\t\t<input class=\"form-control\" type=\"text\" name=\"login-email\" placeholder=\"";
#line 203 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 235 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("E-Mail") );
responseStream << "\" value=\"";
#line 203 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 235 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( presetEmail );
responseStream << "\"/>\n";
responseStream << "\t\t\t<input class=\"form-control\" type=\"password\" name=\"login-password\" placeholder=\"";
#line 204 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 236 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Password") );
responseStream << "\" />\n";
responseStream << "\t\t <button type=\"submit\" name=\"submit\" class=\"center-form-submit form-button\">";
#line 205 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 237 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext(" Login ") );
responseStream << "</button>\n";
responseStream << "\t\t</form>\n";
@ -346,7 +398,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << " <div class=\"center-form-bottom\">\n";
responseStream << " <div class=\"signup-link\">\n";
responseStream << "\t <p>";
#line 210 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 242 "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 << "\t <a href=\"";
@ -354,17 +406,17 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::
responseStream << ( ServerConfig::g_serverPath );
responseStream << "/registerDirect\">\n";
responseStream << "\t\t\t";
#line 212 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 244 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Create New Account") );
responseStream << "\n";
responseStream << "\t\t </a>\n";
responseStream << "\t </div>\n";
responseStream << "\t\t<div class=\"reset-pwd-link\">\n";
responseStream << "\t\t\t<a href=\"";
#line 216 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 248 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( getBaseUrl() );
responseStream << "/resetPassword\">";
#line 216 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
#line 248 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp"
responseStream << ( langCatalog->gettext("Passwort vergessen") );
responseStream << "</a>\n";
responseStream << "\t\t</div>\n";

View File

@ -236,6 +236,9 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
//printf("[PageRequestHandlerFactory] go to dashboard page with user\n");
return basicSetup(new DashboardPage(s), request, timeUsed);
}
if (url_first_part == "/login" || url_first_part == "/") {
return basicSetup(new LoginPage(s), request, timeUsed);
}
} else {

View File

@ -31,8 +31,12 @@ void RegisterDirectPage::handleRequest(Poco::Net::HTTPServerRequest& request, Po
auto sm = SessionManager::getInstance();
bool userReturned = false;
std::string caller_uri;
if(!form.empty()) {
caller_uri = form.get("caller_uri", "");
if(form.get("register-password2", "") != form.get("register-password", "")) {
addError(new Error("Passwort", "Passw&ouml;rter sind nicht identisch."), false);
} else {
@ -41,23 +45,38 @@ void RegisterDirectPage::handleRequest(Poco::Net::HTTPServerRequest& request, Po
session = sm->getNewSession();
auto user_host = request.clientAddress().host();
session->setClientIp(user_host);
session->setCallerUri(caller_uri);
response.addCookie(session->getLoginCookie());
}
printf("caller uri after session: %s\n", caller_uri.data());
auto email = form.get("register-email", "");
auto password = form.get("register-password", "");
if(email != "" && password != "") {
userReturned = session->createUserDirect(
form.get("register-first-name", ""),
form.get("register-last-name", ""),
form.get("register-email", ""),
form.get("register-password", ""),
getBaseUrl()
);
userReturned = session->createUserDirect(
form.get("register-first-name", ""),
form.get("register-last-name", ""),
email,
password,
getBaseUrl()
);
}
getErrors(session);
if(!errorCount()) {
if(!errorCount() && userReturned) {
auto user_host = request.clientAddress().host();
session->setClientIp(user_host);
response.addCookie(session->getLoginCookie());
if(caller_uri == "") {
caller_uri = session->getCallerUri();
}
if(caller_uri != "") {
std::string redirect_url = caller_uri;
redirect_url += "?session_id=" + std::to_string(session->getHandle());
response.redirect(redirect_url);
return;
}
response.redirect(getBaseUrl() + "/userUpdateGroup");
return;
}
@ -127,7 +146,7 @@ void RegisterDirectPage::handleRequest(Poco::Net::HTTPServerRequest& request, Po
responseStream << " </div>";
// end include header.cpsp
responseStream << "\n";
#line 58 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
#line 77 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\n";
responseStream << "<div class=\"center-form-container\">\n";
@ -139,18 +158,18 @@ void RegisterDirectPage::handleRequest(Poco::Net::HTTPServerRequest& request, Po
responseStream << "\t\t\t<p>Bitte gib deine Daten um einen Account anzulegen:</p>\n";
responseStream << "\t\t\t<label class=\"form-label\" for=\"register-first-name\">Vorname</label>\n";
responseStream << "\t\t\t<input class=\"form-control\" id=\"register-first-name\" type=\"text\" name=\"register-first-name\" value=\"";
#line 67 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-first-name") : "" );
#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-first-name", "") : "" );
responseStream << "\"/>\n";
responseStream << "\t\t\t<label class=\"form-label\" for=\"register-last-name\">Nachname</label>\n";
responseStream << "\t\t\t<input class=\"form-control\" id=\"register-last-name\" type=\"text\" name=\"register-last-name\" value=\"";
#line 69 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-last-name") : "" );
#line 88 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-last-name", "") : "" );
responseStream << "\"/>\n";
responseStream << "\t\t\t<label class=\"form-label\" for=\"register-email\">E-Mail</label>\n";
responseStream << "\t\t\t<input class=\"form-control\" id=\"register-email\" type=\"email\" name=\"register-email\" value=\"";
#line 71 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-email") : "" );
#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\registerDirect.cpsp"
responseStream << ( !form.empty() ? form.get("register-email", "") : "" );
responseStream << "\"/>\n";
responseStream << "\t\t\t<label class=\"form-label\" for=\"register-password\">Passwort</label>\n";
responseStream << "\t\t\t<input class=\"form-control\" id=\"register-password\" type=\"password\" name=\"register-password\"/>\n";

View File

@ -181,6 +181,9 @@ public:
inline void setLastReferer(const std::string& lastReferer) { mLastExternReferer = lastReferer; }
inline const std::string& getLastReferer() const { return mLastExternReferer; }
inline void setCallerUri(const std::string& callerUri) { mCallerUri = callerUri; }
inline const std::string& getCallerUri() { return mCallerUri; }
protected:
void updateTimeout();
inline void setHandle(int newHandle) { mHandleId = newHandle; }
@ -199,6 +202,8 @@ private:
Poco::DateTime mLastActivity;
Poco::Net::IPAddress mClientLoginIP;
std::string mLastExternReferer;
//! should be used by vue-client and similar clients
std::string mCallerUri;
Poco::AutoPtr<controller::EmailVerificationCode> mEmailVerificationCodeObject;
std::shared_mutex mSharedMutex;

View File

@ -36,6 +36,7 @@ enum PageState {
std::string memo = "";
bool hasErrors = false;
bool enableLogout = true;
bool enableSign = true;
int skip_count = 0;
int pending_task_id = 0;
@ -45,7 +46,7 @@ enum PageState {
}
PageState state = PAGE_NO_TRANSACTIONS;
if(!user_model->isEmailChecked()) {
addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!")));
hasErrors = true;
@ -186,6 +187,7 @@ enum PageState {
addError(new Error(gettext("Passwort"), gettext("Gespeicherte Daten sind korrupt!")));
hasErrors = true;
state = PAGE_USER_DATA_CORRUPTED;
enableSign = false;
break;
case -3:
addError(new Error(gettext("Passwort"), gettext("Passwortprüfung läuft schon, bitte versuche es in 1-2 Minuten erneut.")));
@ -247,10 +249,12 @@ enum PageState {
if(sumTransactions == 0)
{
auto lastExternReferer = mSession->getLastReferer();
auto callerUri = mSession->getCallerUri();
//lastExternReferer = "";
account_user->reload();
if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) {
//printf("last extern referer: %s\n", lastExternReferer.data());
if(callerUri != "") {
response.redirect(callerUri);
} else if(lastExternReferer != "" && lastExternReferer.find("transaction-send-coins") == std::string::npos) {
response.redirect(lastExternReferer);
} else if(!account_user->getModel()->getGroupId()) {
response.redirect(getBaseUrl() + "/userUpdateGroup");
@ -276,6 +280,14 @@ enum PageState {
//community_server_base_path
break;
}
if(model::gradido::TRANSACTION_GROUP_MEMBER_UPDATE != transactionType)
{
if(!user_model->isEmailChecked()) {
addError(new Error(gettext("E-Mail Aktivierung"), gettext("E-Mail wurde noch nicht aktiviert, du kannst leider noch keine Transaktionen ausführen!")));
hasErrors = true;
enableSign = false;
}
}
}
@ -464,7 +476,7 @@ enum PageState {
<input type="password" class="form-control" id="sign-password" name="sign-password" placeholder="<%= gettext("Passwort") %>">
</div>
<% } %>
<% if(PAGE_USER_DATA_CORRUPTED != state && user_model->isEmailChecked()) { %>
<% if(enableSign && !hasErrors) { %>
<button type="submit" class="form-button" name="ok" value="ok">
<i class="material-icons-outlined">verified_user</i>
<%= gettext("Transaktion unterzeichnen") %>

View File

@ -9,18 +9,25 @@
#include "Poco/Net/HTTPCookie.h"
#include "Poco/Net/HTTPServerParams.h"
#include "Poco/URI.h"
#include "Poco/Logger.h"
#include "../SingletonManager/SessionManager.h"
#include "../SingletonManager/LanguageManager.h"
#include "../SingletonManager/ErrorManager.h"
#include "../lib/JsonRequest.h"
%>
<%%
const char* pageName = "Login";
auto sm = SessionManager::getInstance();
auto lm = LanguageManager::getInstance();
auto em = ErrorManager::getInstance();
auto uri = Poco::URI(request.getURI());
auto query_parameter = uri.getQueryParameters();
std::string caller_uri = "";
auto lang = chooseLanguage(request);
//printf("choose language return: %d\n", lang);
@ -32,7 +39,10 @@
}
if(!form.empty()) {
caller_uri = form.get("caller_uri", "");
printf("form.get: caller_uri: %s\n", caller_uri.data());
bool langUpdatedByBtn = false;
auto langBtn = form.get("lang", "");
if(langBtn != "") {
@ -55,7 +65,7 @@
*/
auto email = form.get("login-email", "");
auto password = form.get("login-password", "");
/*
if(email != "" && password != "") {
//auto session = sm->getSession(request);
//if(!mSession) mSession = sm->findByEmail(email);
@ -81,7 +91,44 @@
response.addCookie(mSession->getLoginCookie());
} else {
langCatalog = mSession->getLanguageCatalog();
*/
if(mSession) {
printf("start with session: %d\n", mSession->getHandle());
} else {
printf("start without session\n");
}
if(!mSession) {
mSession = sm->getNewSession();
mSession->setLanguageCatalog(langCatalog);
// get language
// first check url, second check language header
// for debugging client ip
auto client_ip = request.clientAddress();
std::string clientIpString = "client ip: ";
clientIpString += client_ip.toString();
Poco::Logger::get("requestLog").information(clientIpString);
// debugging end
auto user_host = request.clientAddress().host();
mSession->setClientIp(user_host);
// TODO: check for valid url
if(caller_uri != "") {
mSession->setCallerUri(caller_uri);
}
response.addCookie(mSession->getLoginCookie());
} else {
langCatalog = mSession->getLanguageCatalog();
if(caller_uri == "") {
caller_uri = mSession->getCallerUri();
}
}
printf("after session: caller_uri: %s\n", caller_uri.data());
if(email != "" && password != "") {
UserState user_state;
try {
user_state = mSession->loadUser(email, password);
@ -138,41 +185,47 @@
case USER_NO_PRIVATE_KEY:
case USER_COMPLETE:
case USER_EMAIL_NOT_ACTIVATED:
for(auto it = query_parameter.begin(); it != query_parameter.end(); it++) {
printf("query parameter: %s: %s\n", it->first.data(), it->second.data());
if(it->first == "caller_uri") {
std::string redirect_url = it->second;
redirect_url += "?session_id=" + std::to_string(mSession->getHandle());
response.redirect(redirect_url);
}
}
auto referer = request.find("Referer");
std::string refererString;
if (referer != request.end()) {
refererString = referer->second;
}
if(lastExternReferer != "") {
if(caller_uri != "")
{
std::string redirect_url = caller_uri;
redirect_url += "?session_id=" + std::to_string(mSession->getHandle());
response.redirect(redirect_url);
}
else if(lastExternReferer != "") {
printf("redirect to: %s (last extern referer)\n", lastExternReferer.data());
response.redirect(lastExternReferer);
} else if(refererString != "" && refererString != "/" &&
}
else if(refererString != "" && refererString != "/" &&
refererString.find("login") == std::string::npos &&
refererString.find("logout") == std::string::npos &&
refererString.find("user_delete") == std::string::npos &&
refererString != getBaseUrl() + request.getURI() &&
refererString != user->getGroupBaseUrl() + request.getURI()) {
refererString != user->getGroupBaseUrl() + request.getURI())
{
std::string uri = request.getURI();
printf("request uri: %s, redirect to: %s\n", uri.data(), refererString.data());
response.redirect(refererString);
} else {
}
else
{
if(user->getModel()->getGroupId() != 0) {
printf("redirect to: %s/\n", user->getGroupBaseUrl().data());
auto group = controller::Group::load(user->getModel()->getGroupId());
if(!group.isNull() && group->getModel()) {
JsonRequest json_request(group->getModel()->getUrl(), 443);
Poco::JSON::Object params;
params.set("session_id", mSession->getHandle());
params.set("method", "setSessionId");
auto result = json_request.request("setSessionId", params);
if(JSON_REQUEST_RETURN_OK != result) {
addError(new Error("login", "error setting session id"));
addError(new ParamError("login", "community server url", group->getModel()->getUrl()));
getErrors(&json_request);
sendErrorsAsEmail();
}
}
response.redirect(user->getGroupBaseUrl() + "/");
} else {
response.redirect("https://" + request.getHost() + "/");
@ -181,7 +234,7 @@
return;
}
} else if(!langUpdatedByBtn) {
} else if(!langUpdatedByBtn && caller_uri == "") {
addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("Username and password are needed!")), false);
}

View File

@ -15,8 +15,12 @@
auto sm = SessionManager::getInstance();
bool userReturned = false;
std::string caller_uri;
if(!form.empty()) {
caller_uri = form.get("caller_uri", "");
if(form.get("register-password2", "") != form.get("register-password", "")) {
addError(new Error("Passwort", "Passw&ouml;rter sind nicht identisch."), false);
} else {
@ -25,23 +29,38 @@
session = sm->getNewSession();
auto user_host = request.clientAddress().host();
session->setClientIp(user_host);
session->setCallerUri(caller_uri);
response.addCookie(session->getLoginCookie());
}
printf("caller uri after session: %s\n", caller_uri.data());
auto email = form.get("register-email", "");
auto password = form.get("register-password", "");
if(email != "" && password != "") {
userReturned = session->createUserDirect(
form.get("register-first-name", ""),
form.get("register-last-name", ""),
form.get("register-email", ""),
form.get("register-password", ""),
getBaseUrl()
);
userReturned = session->createUserDirect(
form.get("register-first-name", ""),
form.get("register-last-name", ""),
email,
password,
getBaseUrl()
);
}
getErrors(session);
if(!errorCount()) {
if(!errorCount() && userReturned) {
auto user_host = request.clientAddress().host();
session->setClientIp(user_host);
response.addCookie(session->getLoginCookie());
if(caller_uri == "") {
caller_uri = session->getCallerUri();
}
if(caller_uri != "") {
std::string redirect_url = caller_uri;
redirect_url += "?session_id=" + std::to_string(session->getHandle());
response.redirect(redirect_url);
return;
}
response.redirect(getBaseUrl() + "/userUpdateGroup");
return;
}
@ -64,11 +83,11 @@
<form method="POST">
<p>Bitte gib deine Daten um einen Account anzulegen:</p>
<label class="form-label" for="register-first-name">Vorname</label>
<input class="form-control" id="register-first-name" type="text" name="register-first-name" value="<%= !form.empty() ? form.get("register-first-name") : "" %>"/>
<input class="form-control" id="register-first-name" type="text" name="register-first-name" value="<%= !form.empty() ? form.get("register-first-name", "") : "" %>"/>
<label class="form-label" for="register-last-name">Nachname</label>
<input class="form-control" id="register-last-name" type="text" name="register-last-name" value="<%= !form.empty() ? form.get("register-last-name") : "" %>"/>
<input class="form-control" id="register-last-name" type="text" name="register-last-name" value="<%= !form.empty() ? form.get("register-last-name", "") : "" %>"/>
<label class="form-label" for="register-email">E-Mail</label>
<input class="form-control" id="register-email" type="email" name="register-email" value="<%= !form.empty() ? form.get("register-email") : "" %>"/>
<input class="form-control" id="register-email" type="email" name="register-email" value="<%= !form.empty() ? form.get("register-email", "") : "" %>"/>
<label class="form-label" for="register-password">Passwort</label>
<input class="form-control" id="register-password" type="password" name="register-password"/>
<label class="form-label" for="register-password">Passwort Best&auml;tigung</label>