Introducing HandlerConfig class to give handlers config values they need
此提交包含在:
@ -1,6 +1,6 @@
|
||||
#ifndef HANDLER_H
|
||||
#define HANDLER_H
|
||||
|
||||
#include "../config.h"
|
||||
#include "../response.h"
|
||||
#include "../request.h"
|
||||
#include "../template.h"
|
||||
@ -17,14 +17,17 @@ class Handler
|
||||
Database *database;
|
||||
Session *userSession;
|
||||
UrlProvider *urlProvider;
|
||||
HandlerConfig *handlersConfig;
|
||||
|
||||
// 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)
|
||||
Handler(HandlerConfig &handlersConfig, Template &templ, Database &db, Session &userSession, UrlProvider &provider,
|
||||
ICache &cache)
|
||||
{
|
||||
this->handlersConfig = &handlersConfig;
|
||||
this->templ = &templ;
|
||||
this->database = &db;
|
||||
this->userSession = &userSession;
|
||||
|
@ -38,24 +38,27 @@ class Factory
|
||||
Session &userSession;
|
||||
UrlProvider &urlProvider;
|
||||
ICache &cache;
|
||||
HandlerConfig &handlerConfig;
|
||||
|
||||
public:
|
||||
Factory(Template &templ, Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache)
|
||||
: templ(templ), db(db), userSession(usersession), urlProvider(urlprovider), cache(cache)
|
||||
Factory(HandlerConfig &handlerConfig, Template &templ, Database &db, Session &usersession, UrlProvider &urlprovider,
|
||||
ICache &cache)
|
||||
: handlerConfig(handlerConfig), templ(templ), db(db), userSession(usersession), urlProvider(urlprovider),
|
||||
cache(cache)
|
||||
{
|
||||
}
|
||||
|
||||
template <class T> inline std::unique_ptr<T> produce()
|
||||
{
|
||||
return std::make_unique<T>(templ, db, userSession, urlProvider, cache);
|
||||
return std::make_unique<T>(handlerConfig, templ, db, userSession, urlProvider, cache);
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<Handler> createHandler(const std::string &action, Template &templ, Database &db, Session &usersession,
|
||||
UrlProvider &urlprovider, ICache &cache)
|
||||
std::unique_ptr<Handler> createHandler(const std::string &action, HandlerConfig &handlerConfig, Template &templ,
|
||||
Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache)
|
||||
{
|
||||
|
||||
Factory producer(templ, db, usersession, urlprovider, cache);
|
||||
Factory producer(handlerConfig, templ, db, usersession, urlprovider, cache);
|
||||
|
||||
if(action == "" || action == "index")
|
||||
{
|
||||
|
@ -4,6 +4,6 @@
|
||||
#include "handler.h"
|
||||
#include "../template.h"
|
||||
|
||||
std::unique_ptr<Handler> createHandler(const std::string &action, Template &templ, Database &db, Session &usersession,
|
||||
UrlProvider &urlprovider, ICache &cache);
|
||||
std::unique_ptr<Handler> createHandler(const std::string &action, HandlerConfig &handlerConfig, Template &templ,
|
||||
Database &db, Session &usersession, UrlProvider &urlprovider, ICache &cache);
|
||||
#endif // HANDLERFACTORY_H
|
||||
|
新增問題並參考
封鎖使用者