diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index e2e5fe1b3..f32c53d40 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -38,16 +38,22 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: auto langCatalog = lm->getFreeCatalog(lang); if(!form.empty()) { - auto langBtn = form.get("lang", ""); - bool langUpdated = false; + bool langUpdatedByBtn = false; + auto langBtn = form.get("lang-btn", ""); + auto langInput = form.get("lang", ""); + auto updatedLang = LANG_NULL; if(langBtn != "") { - auto updatedLang = chooseLanguage(request, langBtn); - if(updatedLang != lang) { - lang = updatedLang; - langCatalog = lm->getFreeCatalog(lang); - langUpdated = true; - } - } + updatedLang = chooseLanguage(request, langBtn); + langUpdatedByBtn = true; + } else if(langInput != "") { + updatedLang = chooseLanguage(request, langInput); + } + + if(updatedLang != LANG_NULL && updatedLang != lang) { + lang = updatedLang; + langCatalog = lm->getFreeCatalog(lang); + } + auto email = form.get("login-email", ""); auto password = form.get("login-password", ""); @@ -67,6 +73,8 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: auto user_host = request.clientAddress().host(); session->setClientIp(user_host); response.addCookie(session->getLoginCookie()); + } else { + langCatalog = session->getLanguageCatalog(); } auto userState = session->loadUser(email, password); getErrors(session); @@ -91,13 +99,17 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: return; } - } else if(!langUpdated) { + } else if(!langUpdatedByBtn) { addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("Username and password are needed!"))); } } else { // on enter login page with empty form - // remove old cookies if exist + auto session = sm->getSession(request); + // remove old cookies and session if exist + if(session) { + sm->releaseSession(session); + } sm->deleteLoginCookies(request, response); } @@ -124,7 +136,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; - responseStream << "\t

Alpha 0.6.1

\n"; + responseStream << "\t

Alpha 0.7.0

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