52 строки
1.3 KiB
C++
52 строки
1.3 KiB
C++
#ifndef HANDLER_H
|
|
#define HANDLER_H
|
|
|
|
#include "../response.h"
|
|
#include "../request.h"
|
|
#include "../template.h"
|
|
#include "../database/database.h"
|
|
#include "../urlprovider.h"
|
|
#include "../database/queryoption.h"
|
|
#include "../logger.h"
|
|
#include "../cache/icache.h"
|
|
class Handler
|
|
{
|
|
protected:
|
|
ICache *cache;
|
|
Template *templ;
|
|
Database *database;
|
|
Session *userSession;
|
|
UrlProvider *urlProvider;
|
|
|
|
//TODO: may not to find a better place for this method
|
|
Permissions effectivePermissions(std::string page);
|
|
QueryOption queryOption(const Request &r) const;
|
|
public:
|
|
Handler(Template &templ, Database &db, Session &userSession, UrlProvider &provider, ICache &cache)
|
|
{
|
|
this->templ = &templ;
|
|
this->database = &db;
|
|
this->userSession = &userSession;
|
|
this->urlProvider = &provider;
|
|
this->cache = &cache;
|
|
}
|
|
|
|
virtual Response handle(const Request &r);
|
|
virtual Response handleRequest(const Request &r)
|
|
{
|
|
return this->errorResponse("Invalid action", "This action is not implemented yet");
|
|
}
|
|
|
|
virtual bool canAccess(const Permissions &perms) {
|
|
return false;
|
|
}
|
|
virtual std::string accessErrorMessage() {
|
|
return "No permission for this action";
|
|
}
|
|
void setGeneralVars(TemplatePage &page);
|
|
virtual ~Handler() { }
|
|
Response errorResponse(std::string errortitle, std::string errormessage, int status = 200);
|
|
};
|
|
|
|
#endif // HANDLER_H
|