diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index d7e336114..366132970 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -96,7 +96,8 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: } auto userState = mSession->loadUser(email, password); auto user = mSession->getNewUser(); - if(!user->getModel()->getPublicKey()) { + + if(userState >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) { mSession->generateKeys(true, true); } else { printf("pubkey exist: %d\n",user->getModel()->getPublicKey()); @@ -105,7 +106,9 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: auto uri_start = request.serverParams().getServerName(); auto lastExternReferer = mSession->getLastReferer(); - + + printf("userState: %d\n", userState); + switch(userState) { case USER_EMPTY: case USER_PASSWORD_INCORRECT: @@ -130,8 +133,10 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: } else if(refererString != "" && refererString.find("login") == std::string::npos && refererString.find("logout") == std::string::npos && - refererString.find("user_delete") == std::string::npos ) { - printf("redirect to: %s\n", refererString.data()); + refererString.find("user_delete") == std::string::npos && + refererString != ServerConfig::g_serverPath + request.getURI()) { + std::string uri = request.getURI(); + printf("request uri: %s, redirect to: %s\n", uri.data(), refererString.data()); response.redirect(refererString); } else { response.redirect(ServerConfig::g_php_serverPath + "/"); @@ -220,20 +225,20 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t \n"; responseStream << "\t\t\t\t\"logo\"\n"; responseStream << "\t\t\t\n"; @@ -245,14 +250,14 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t"; -#line 163 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\t \n"; responseStream << "\t\t\t
\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "\t\t\t \n"; responseStream << "\t\t\t "; @@ -292,51 +297,51 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: // end include flags.cpsp responseStream << "\n"; responseStream << "\t\t\t
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " gettext("E-Mail") ); responseStream << "\" value=\""; -#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( presetEmail ); responseStream << "\"/>\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << " gettext("Password") ); responseStream << "\" />\n"; responseStream << "
\n"; responseStream << " \n"; responseStream << "
\n"; responseStream << "\t\t\t\t\t\n"; diff --git a/src/cpsp/login.cpsp b/src/cpsp/login.cpsp index a6ff89ca9..3349cee8e 100644 --- a/src/cpsp/login.cpsp +++ b/src/cpsp/login.cpsp @@ -75,7 +75,8 @@ } auto userState = mSession->loadUser(email, password); auto user = mSession->getNewUser(); - if(!user->getModel()->getPublicKey()) { + + if(userState >= USER_LOADED_FROM_DB && !user->getModel()->getPublicKey()) { mSession->generateKeys(true, true); } else { printf("pubkey exist: %d\n",user->getModel()->getPublicKey()); @@ -84,7 +85,9 @@ auto uri_start = request.serverParams().getServerName(); auto lastExternReferer = mSession->getLastReferer(); - + + printf("userState: %d\n", userState); + switch(userState) { case USER_EMPTY: case USER_PASSWORD_INCORRECT: @@ -109,8 +112,10 @@ } else if(refererString != "" && refererString.find("login") == std::string::npos && refererString.find("logout") == std::string::npos && - refererString.find("user_delete") == std::string::npos ) { - printf("redirect to: %s\n", refererString.data()); + refererString.find("user_delete") == std::string::npos && + refererString != ServerConfig::g_serverPath + request.getURI()) { + std::string uri = request.getURI(); + printf("request uri: %s, redirect to: %s\n", uri.data(), refererString.data()); response.redirect(refererString); } else { response.redirect(ServerConfig::g_php_serverPath + "/");