#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 << "Gradido Login Server: "; #line 9 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; responseStream << "\t

Alpha 0.4.2

\n"; responseStream << "
\n"; responseStream << ""; // end include header.cpsp responseStream << "\n"; responseStream << "
\n"; responseStream << "\t
\n"; responseStream << "\t\t

Login

\n"; responseStream << "\t\t"; #line 76 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\tLogin\n"; responseStream << "\t\t\t

Bitte gebe deine Zugangsdaten ein um dich einzuloggen.

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

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

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

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

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

Du hast noch keinen Account? Dann folge dem Link um dir einen anzulegen

\n"; responseStream << "\t\tNeuen Account anlegen\n"; responseStream << "\t
\n"; responseStream << "\t\n"; responseStream << "
\n"; // begin include footer.cpsp responseStream << "\t
\n"; responseStream << "\t\t\t"; #line 2 "I:\\Code\\C++\\Eigene_Projekte\\Gradido_LoginServer\\src\\cpsp\\footer.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "\t
\n"; responseStream << "\n"; responseStream << ""; // end include footer.cpsp if (_compressResponse) _gzipStream.close(); }