diff --git a/src/cpp/HTTPInterface/UserUpdateGroupPage.cpp b/src/cpp/HTTPInterface/UserUpdateGroupPage.cpp index 6f1fde683..efebbed41 100644 --- a/src/cpp/HTTPInterface/UserUpdateGroupPage.cpp +++ b/src/cpp/HTTPInterface/UserUpdateGroupPage.cpp @@ -87,18 +87,33 @@ void UserUpdateGroupPage::handleRequest(Poco::Net::HTTPServerRequest& request, P state = PAGE_STATE_NO_GROUPS; } else { + auto referer = request.find("Referer"); + std::string refererString; + if (referer != request.end()) { + refererString = referer->second; + } + + + pt->lock("userUpdateGroup Page"); - if(pt->hasPendingTask(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER)) { + auto has_pending_group_add_member_task = pt->hasPendingTask(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); + auto referer_was_checkTransaction = refererString.find("checkTransactions") != std::string::npos; + if(has_pending_group_add_member_task) { state = PAGE_STATE_REQUEST_IS_RUNNING; std::vector> tasks = pt->getPendingTasks(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); // should be only one Poco::AutoPtr transaction = tasks[0].cast(); if(transaction->getSignCount() == 0) { pt->unlock(); - response.redirect(user->getGroupBaseUrl() + "/checkTransactions"); + response.redirect(ServerConfig::g_serverPath + "/checkTransactions"); return; } + } else if(referer_was_checkTransaction && user->getModel()->getGroupId()) { + pt->unlock(); + response.redirect(user->getGroupBaseUrl()); + return; } + pt->unlock(); } } @@ -163,100 +178,100 @@ void UserUpdateGroupPage::handleRequest(Poco::Net::HTTPServerRequest& request, P responseStream << " "; // end include header.cpsp responseStream << "\n"; -#line 88 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "\t"; -#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" if(PAGE_STATE_OVERVIEW == state ) { responseStream << "\n"; responseStream << "
\n"; responseStream << "

"; -#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 107 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Gruppe wählen") ); responseStream << "

\n"; responseStream << "
\n"; responseStream << "\t

"; -#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Bitte wähle die Gruppe/Gemeinschaft aus, zu der du gehörst.") ); responseStream << "

\n"; responseStream << "\t

"; -#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Du bekommst eine Bestätigungsmail, nachdem dein Beitritt bestätigt wurde.") ); responseStream << "

\n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t
"; -#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Auswahl") ); responseStream << "
\n"; responseStream << "\t\t\t\t
Name
\n"; responseStream << "\t\t\t\t
Alias
\n"; responseStream << "\t\t\t\t
Url
\n"; responseStream << "\t\t\t\t
"; -#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Description") ); responseStream << "
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t"; -#line 105 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" for(auto it = groups.begin(); it != groups.end(); it++) { auto group_model = (*it)->getModel(); responseStream << "\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t\t
getID()); responseStream << "\" />
\n"; responseStream << "\t\t\t\t\t
"; -#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( group_model->getName() ); responseStream << "
\n"; responseStream << "\t\t\t\t\t
"; -#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( group_model->getAlias() ); responseStream << "
\n"; responseStream << "\t\t\t\t\t
"; -#line 111 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( group_model->getUrl() ); responseStream << "
\n"; responseStream << "\t\t\t\t\t
"; -#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( group_model->getDescription()); responseStream << "
\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t"; -#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t"; -#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 133 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" } else if(PAGE_STATE_REQUEST_IS_RUNNING == state) { responseStream << "\n"; responseStream << "\t\t

"; -#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 134 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Deine Beitrittsanfrage wird bearbeitet, du bekommst eine E-Mail wenn sie bestätigt oder abgelehnt wurde.") ); responseStream << "

\n"; responseStream << "\t\t

"; -#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 135 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Abmelden") ); responseStream << "

\n"; responseStream << "\t"; -#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 136 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" } else if(PAGE_STATE_NO_GROUPS == state) { responseStream << "\n"; responseStream << "\t\t

"; -#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 137 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" responseStream << ( gettext("Noch keine Gruppen vorhanden, bitte warte bis der Admin welche hinzugefügt hat.") ); responseStream << "\n"; responseStream << "\t"; -#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" +#line 138 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\userUpdateGroup.cpsp" } responseStream << "\n"; responseStream << "

\n"; // begin include footer.cpsp diff --git a/src/cpsp/userUpdateGroup.cpsp b/src/cpsp/userUpdateGroup.cpsp index 7e210eb4b..2c204fdc6 100644 --- a/src/cpsp/userUpdateGroup.cpsp +++ b/src/cpsp/userUpdateGroup.cpsp @@ -65,18 +65,33 @@ enum PageState { state = PAGE_STATE_NO_GROUPS; } else { + auto referer = request.find("Referer"); + std::string refererString; + if (referer != request.end()) { + refererString = referer->second; + } + + + pt->lock("userUpdateGroup Page"); - if(pt->hasPendingTask(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER)) { + auto has_pending_group_add_member_task = pt->hasPendingTask(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); + auto referer_was_checkTransaction = refererString.find("checkTransactions") != std::string::npos; + if(has_pending_group_add_member_task) { state = PAGE_STATE_REQUEST_IS_RUNNING; std::vector> tasks = pt->getPendingTasks(user, model::table::TASK_TYPE_GROUP_ADD_MEMBER); // should be only one Poco::AutoPtr transaction = tasks[0].cast(); if(transaction->getSignCount() == 0) { pt->unlock(); - response.redirect(user->getGroupBaseUrl() + "/checkTransactions"); + response.redirect(ServerConfig::g_serverPath + "/checkTransactions"); return; } + } else if(referer_was_checkTransaction && user->getModel()->getGroupId()) { + pt->unlock(); + response.redirect(user->getGroupBaseUrl()); + return; } + pt->unlock(); } }