47 if (request->path() ==
"/unatuhenticate") {
49 response->setStatus(204,
"OK");
54 if (!request->parameter(
"user").isEmpty() && !request->parameter(
"password").isEmpty()) {
55 session.add(
"user", request->parameter(
"user"));
56 session.add(
"password", request->parameter(
"password"));
59 QString user = session.value(
"user").toString();
60 QString password = session.value(
"password").toString();
64 if (!m_authenticatedUser->authenticate(user, password) && (
65 request->path().contains(QRegExp(R
"%(\.shtml)%")) ||
66 request->path().contains(QRegExp(R"%(\.html)%")))) {
67 m_authenticatedUser->setAuthenticated(false);
68 response->setStatus(302,
"Found");
69 response->setHeader(
"Location",
"/public/login.shtml");
70 response->write(
"302 Found");
75 if (!m_authenticatedUser->authenticate(user, password)) {
76 response->setStatus(401,
"Unauthorized");
78 m_authenticatedUser->setAuthenticated(
false);
82 if (request->path() ==
"/api/v1/authenticate") {
83 session.add(
"user", user);
84 session.add(
"password", password);
85 Db::Database *db = Db::Database::create(
this, m_authenticatedUser);
87 QList<Dbt::ServerInfo> list = db->serverInfo();
89 data[
"userid"] = m_authenticatedUser->user();
90 data[
"username"] = m_authenticatedUser->login();
91 data[
"name"] = m_authenticatedUser->name();
92 data[
"admin"] = m_authenticatedUser->admin();
93 data[
"lang"] = m_authenticatedUser->lang();
94 data[
"server_name"] = (list.isEmpty()) ? MSETTINGS->serverName() : list.first().name;
95 data[
"server_description"] = (list.isEmpty()) ? MSETTINGS->serverDescription() : list.first().description;
96 data[
"server_git_commit"] = GIT_COMMIT;
97 data[
"server_git_branch"] = GIT_BRANCH;
98 data[
"server_version"] = VERSION;
99 data[
"server_qt_version"] = qtVersion();
101 QList<Dbt::ClientSettings> cslist = db->clientSettings();
102 if (cslist.size() == 1) {
104 data[
"multiple_timesheets"] = cs.multiple_timesheets;
105 data[
"show_price"] = cs.show_price;
106 data[
"can_change_category"] = cs.can_change_category;
107 data[
"edit_categories"] = cs.edit_categories;
108 data[
"show_multiple_timesheets"] = cs.show_multiple_timesheets;
109 data[
"show_show_price"] = cs.show_show_price;
110 data[
"show_can_change_category"] = cs.show_can_change_category;
111 data[
"show_edit_categories"] = cs.show_edit_categories;
115 response->setStatus(200,
"OK");
116 response->setHeader(
"Content-Type",
"application/json");
117 response->setHeader(
"Cache-Control",
"no-cache,public");