gradido/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp
2019-09-27 21:29:55 +02:00

57 lines
1.2 KiB
C++

#include "PageRequestHandlerFactory.h"
#include "Poco/Net/HTTPServerRequest.h"
#include "ConfigPage.h"
#include "LoginPage.h"
#include "RegisterPage.h"
#include "HandleFileRequest.h"
#include "DashboardPage.h"
#include "../SingletonManager/SessionManager.h"
PageRequestHandlerFactory::PageRequestHandlerFactory()
{
}
Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest& request)
{
//printf("request uri: %s\n", request.getURI().data());
std::string uri = request.getURI();
auto referer = request.find("Referer");
if (referer != request.end()) {
printf("referer: %s\n", referer->second.data());
}
// check if user has valid session
Poco::Net::NameValueCollection cookies;
request.getCookies(cookies);
int session_id = 0;
try {
session_id = atoi(cookies.get("user").data());
} catch (...) {}
auto sm = SessionManager::getInstance();
auto s = sm->getSession(session_id);
if (s) {
return new DashboardPage(s);
} else {
if (uri == "/") {
return new ConfigPage;
}
else if (uri == "/login") {
return new LoginPage;
}
else if (uri == "/register") {
return new RegisterPage;
}
}
return new HandleFileRequest;
//return new PageRequestHandlerFactory;
}