Complete backend MVP

This commit is contained in:
gabdevele
2026-06-05 11:56:28 +02:00 Unverified
parent 25c280f38b
commit 5974f01daa
25 changed files with 3468 additions and 1137 deletions
+45 -1
View File
@@ -4,10 +4,23 @@
#include "common/Http.h"
#include "services/AdminService.h"
#include <optional>
using drogon::HttpResponsePtr;
namespace
{
std::optional<std::string> queryValue(const drogon::HttpRequestPtr &req,
const std::string &key)
{
const auto value = req->getParameter(key);
if (value.empty())
{
return std::nullopt;
}
return value;
}
std::optional<visione::auth::UserContext> requireUser(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &callback)
@@ -128,6 +141,38 @@ void AdminController::overviewStats(
sendAdmin(service.overviewStats(*user), std::move(callback));
}
void AdminController::listModeration(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)
{
auto user = requireUser(req, callback);
if (!user || blockPasswordChangeRequired(*user, callback))
{
return;
}
visione::services::AdminService service;
sendAdmin(service.listModeration(*user,
queryValue(req, "status"),
queryValue(req, "page"),
queryValue(req, "per_page")),
std::move(callback));
}
void AdminController::updateModeration(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback,
long long flagId)
{
auto user = requireUser(req, callback);
if (!user || blockPasswordChangeRequired(*user, callback))
{
return;
}
visione::services::AdminService service;
sendAdmin(service.updateModeration(*user, flagId, visione::http::requireJson(req)),
std::move(callback));
}
void AdminController::listUsers(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)
@@ -170,4 +215,3 @@ void AdminController::updateUserBan(
sendAdmin(service.updateUserBan(*user, userId, visione::http::requireJson(req)),
std::move(callback));
}