8#include "httprequest.h"
9#include "httpresponse.h"
10#include "httpconnection.h"
12#include "staticfilecontroller.h"
15#include "pluginstore.h"
16#include "plugininterface.h"
18#include <QRegularExpression>
45#include "controllerdooremployees.h"
46#include "controllerdepartmentemployees.h"
47#include "controllerdepartmenthasmanager.h"
48#include "controllerrfidemployees.h"
49#include "controllerrfids.h"
51#include "controllerevents.h"
54#include "controllerattendancechecklist.h"
55#include "controllerattendancesummary.h"
56#include "controllerattendancepresent.h"
57#include "controllerattendancerecent.h"
59using namespace HobrasoftHttpd;
75RequestMapper::~RequestMapper() {
87 PDEBUG << request->method() << request->fullPath();
89 #define ROUTER(adresa, trida) { \
90 if (m_path.contains(QRegularExpression(adresa))) { \
91 AbstractController *controller = new trida (connection()); \
92 controller->setAuthorizer(m_authorizer); \
93 controller->service(request, response); \
98 if (
m_path.contains(QRegExp(
"^/public/.*\\.shtml"))) {
99 serviceShtmlFile(request, response);
104 if (
m_path.startsWith(
"/index.html") ||
m_path ==
"/") {
105 StaticFileController(connection()).service(request, response);
110 if (
m_path.startsWith(
"/public/")) {
111 StaticFileController(connection()).service(request, response);
122 if (!m_authorizer->isLoggedIn(request, response)) {
166 if (
m_path.contains(QRegularExpression(
".*\\.shtml"))) {
167 serviceShtmlFile(request, response);
172 StaticFileController(connection()).service(request, response);
176void RequestMapper::serviceShtmlFile(HttpRequest *request, HttpResponse *response) {
180 data = readFile(
m_path, response);
185 response->setHeader(
"Content-Type",
"text/html; charset=" + connection()->settings()->encoding());
186 response->write(data);
191QByteArray RequestMapper::readFile(
const QString& path, HttpResponse *response) {
193 if (path.startsWith(
"/..") || path.startsWith(
"..")) {
194 response->setStatus(403,
"Forbidden");
195 response->write(QString(
"403 Forbidden: %1<br>\nDo not use ../ in your file path").arg(path).toUtf8());
200 QFile file(connection()->settings()->docroot()+
"/"+path);
201 if (!file.exists()) {
202 response->setStatus(404,
"Not found");
203 response->write(QString(
"404 File not found: %1").arg(file.fileName()).toUtf8());
208 if (!file.open(QIODevice::ReadOnly)) {
209 response->setStatus(403,
"Forbidden");
210 response->write(QString(
"403 Forbidden: %1").arg(file.fileName()).toUtf8());
217 while (!file.atEnd()) {
218 QString line = QString::fromUtf8(file.readLine());
219 line = line.replace(
"${ROLE}", rolename);
221 if (line.contains(QRegExp(R
"X(^\s*<!--\s*#include\s+['"].+['"]\s*-->\s*$)X"))) {
222 QStringList lineparts = line.split(QRegExp(R"X(['"])X"));
223 if (lineparts.size() != 3) {
226 data += readFile(lineparts[1], response);
229 data += line.toUtf8();
Vrací seznam kategorií od zadané kategorie až k rootu.
Manipulace s kategoriemi.
Manipuluje s informacemi o odděleních v docházce.
Manipuluje s informacemi o dveřích v docházce.
Manipuluje s informacemi o zaměstnancích v docházce.
Manipuluje s informacemi o typu události v event logu v docházce.
Manipuluje se záznamy událostí v docházce.
Vrací podklady pro tištěný pracovní výkaz.
Vrací podklady pro tištěný pracovní výkaz.
Manipuluje s informacemi o RFID kartách v docházce.
Vrací informace o serveru.
Vrací informace o pořadí přechodů mezi jednotlivými stavy ticketu.
Manipulace se šablonami stavů
Manipulace se stavy ticketů
Manipulace se soubory ticketů
Manipulace se stavy ticketů
Manipulace se záznamy pracovního výkazu.
Manipulace s přibalenými objekty ticketů
Manipuluje s informacemi o ticketech.
Manipuluje s informacemi o ticketech.
Nastartování nebo zastavení pracovního výkazu.
Kontroluje přihlašování uživatelů a jejich oprávnění přes webové rozhraní
QString m_path
Obsluhovaná cesta (URL adresa).
RequestMapper(HobrasoftHttpd::HttpConnection *parent)
Konstruktor.
void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Vyřizuje jeden požadavek.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.
static QString toString(Role role)
Vrací název odpovídající role v textu.