Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
abstractcontroller.h
Zobrazit dokumentaci tohoto souboru.
1
7#ifndef _Httpd_AbstractController_H_
8#define _Httpd_AbstractController_H_
9
10#include <QObject>
11#include <QString>
12#include <QVariant>
13#include <QVariantMap>
14#include "httprequesthandler.h"
15#include "requestauthorizer.h"
17#include "authenticateduser.h"
18#include "db.h"
19
20namespace HobrasoftHttpd {
21class HttpRequestHandler;
22class HttpRequest;
23class HttpResponse;
24class HttpConnection;
25}
26
30#define AUTHORIZEREQUEST(x) \
31if (!isAuthorized(x)) { \
32 serviceError(request, response, 401, "Unauthorized", \
33 QString("Your user account is not authorized to access this page (%1)") \
34 .arg(Security::Permissions::toString(x)) ); \
35 return; \
36 }
39namespace Httpd {
40
42
132class AbstractController : public HobrasoftHttpd::HttpRequestHandler {
133 Q_OBJECT
134 public:
135
139 AbstractController(HobrasoftHttpd::HttpConnection *parent);
140
144 virtual void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response);
145
149 void setCheckId(bool x) { m_checkId = x; }
150
151 void setAuthorizer(RequestAuthorizer *authorizer) { m_authorizer = authorizer; }
152
153 AuthenticatedUser *authenticatedUser() const { return m_authorizer->authenticatedUser(); }
154
158 bool checkId() const { return m_checkId; }
159
160 Db::Database *db();
161
162 protected:
163
174 virtual bool exists(const QString& id) {
175 Q_UNUSED(id);
176 return true;
177 }
178
179
190 virtual bool exists(HobrasoftHttpd::HttpRequest *request, const QString& id) {
191 Q_UNUSED(request);
192 return exists(id);
193 }
194
195
201 virtual void serviceOK (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant& data = QVariant() );
202
220 virtual void serviceError (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString& error, const QString& reason);
221
239 virtual void serviceError (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString& error, const QVariantMap& data);
240
246 virtual void serviceList (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response);
247
253 virtual void serviceEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response);
254
262 virtual void serviceIdEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id);
263
269 virtual void serviceIdGet (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id);
270
276 virtual void serviceIdDelete (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id);
277
283 virtual void serviceIdPut (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data);
284
290 virtual void serviceIdPost (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data);
291
298 virtual void serviceEvent (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant& data);
299
300 virtual bool isAuthorized (Security::Permissions::Permission);
301
302 HobrasoftHttpd::HttpRequest *request() const;
303 HobrasoftHttpd::HttpConnection *connection() const;
304
305 static QVariantMap putKey(const QVariant& key) {
306 QVariantMap data;
307 data["key"] = key;
308 data["ok"] = true;
309 return data;
310 }
311
312 private:
313 #ifndef DOXYGEN_SHOULD_SKIP_THIS
314 HobrasoftHttpd::HttpRequest *m_request;
315 HobrasoftHttpd::HttpConnection *m_connection;
316 bool m_checkId;
317 RequestAuthorizer *m_authorizer;
318 #endif
319
320};
321
322}
323
324#endif
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
AbstractController(HobrasoftHttpd::HttpConnection *parent)
Konstruktor.
virtual void serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle odpověď na požadavek konkrétního ID metodou GET.
virtual bool exists(HobrasoftHttpd::HttpRequest *request, const QString &id)
Kontrola existence zadaného ID.
bool checkId() const
Vrací stav kontroly položky ID v datech při PUT a POST.
HobrasoftHttpd::HttpConnection * connection() const
Vrací ukazatel na aktuální connection.
virtual void serviceEvent(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data)
Pošle do otevřeného proudu událostí jednu událost.
void setCheckId(bool x)
Nastavuje kontrolu položky ID v datech při PUT a POST.
virtual void serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
virtual void serviceIdEvents(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle v odpovědi proud událostí spojených se všemi objekty ve třídě
virtual void serviceEvents(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Pošle v odpovědi kompletní seznam všech objektů ve třídě a následně
virtual void serviceError(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
Pošle chybovou odpověď
virtual void serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
virtual void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Obsluha požadavku.
virtual void serviceOK(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
Pošle odpověď 200 OK.
virtual bool exists(const QString &id)
Kontrola existence zadaného ID.
HobrasoftHttpd::HttpRequest * request() const
Vrací ukazatel na aktuální request.
virtual void serviceList(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Měl by poslat v odpovědi kompletní seznam všech objektů ve třídě a ukončit se.
Kontroluje přihlašování uživatelů a jejich oprávnění přes webové rozhraní
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.
Permission
Seznam jednotlivých oprávnění
Definition permissions.h:22