#include "LoginPage.h" #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/HTTPServerResponse.h" #include "Poco/Net/HTMLForm.h" #include "Poco/DeflatingStream.h" #line 6 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\login.cpsp" #include "Poco/Net/HTTPCookie.h" #include "Poco/Net/HTTPServerParams.h" #include "Poco/Logger.h" #include "../SingletonManager/SessionManager.h" #include "../model/Profiler.h" #line 1 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\header.cpsp" #include "../ServerConfig.h" void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("text/html"); bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); #line 16 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\login.cpsp" const char* pageName = "Login"; auto sm = SessionManager::getInstance(); if(!form.empty()) { auto email = form.get("login-email", ""); auto password = form.get("login-password", ""); if(email != "" && password != "") { auto session = sm->getSession(request); if(!session) { session = sm->getNewSession(); // 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(); session->setClientIp(user_host); response.addCookie(session->getLoginCookie()); } auto userState = session->loadUser(email, password); getErrors(session); auto uri_start = request.serverParams().getServerName(); switch(userState) { case USER_EMPTY: case USER_PASSWORD_INCORRECT: addError(new Error("Login", "E-Mail oder Passwort nicht korrekt, bitte versuche es erneut!")); break; case USER_EMAIL_NOT_ACTIVATED: session->addError(new Error("Account", "E-Mail Adresse wurde noch nicht bestätigt, hast du schon eine E-Mail erhalten?")); response.redirect(ServerConfig::g_serverPath + "/checkEmail"); return; case USER_NO_KEYS: response.redirect(ServerConfig::g_serverPath + "/passphrase"); return; case USER_NO_PRIVATE_KEY: case USER_COMPLETE: response.redirect(ServerConfig::g_php_serverPath + "/"); return; } } else { addError(new Error("Login", "Benutzernamen und Passwort müssen angegeben werden!")); } } else { // on enter login page with empty form // remove old cookies if exist sm->deleteLoginCookies(request, response); } std::ostream& _responseStream = response.send(); Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; responseStream << "\n"; // begin include header.cpsp responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "Login Server in Entwicklung
\n"; responseStream << "\tAlpha 0.4.2
\n"; responseStream << "