[Server] Serve admin actions through the database interface (#7847)

cmdBanFromServer, the admin-flag helpers, cmdForceActivateUser and the
admin-notes commands still prepared their statements inline through
Servatrice_DatabaseInterface, and addWarning was only reachable through the
concrete Servatrice class. Add setAdminFlag, getUserToken, getAdminNotes,
setAdminNotes, addBan and getUserNamesByClientId to Server_DatabaseInterface
with fail-closed defaults, promote addWarning, and model the outcomes as
UserFieldResult and AdminFlagUpdateResult. Notifications, the audit record,
the ban disconnect fan-out and every response code stay in the handler.
This commit is contained in:
BruebachL 2026-11-10 12:16:28 +01:00 • committed by GitHub
parent 948035af06
commit 8c8dd0c072
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 244 additions and 66 deletions

View file

@ -224,8 +224,22 @@ public:
bool newPasswordNeedsHash) override;
void setForcePasswordChange(const QString &user, bool force) override;
QList<ServerInfo_Ban> getUserBanHistory(const QString &userName) override;
bool
addWarning(const QString userName, const QString adminName, const QString warningReason, const QString clientID);
bool addWarning(const QString userName,
const QString adminName,
const QString warningReason,
const QString clientID) override;
Server_DatabaseInterface::AdminFlagUpdateResult setAdminFlag(const QString &userName, int flag, bool add) override;
Server_DatabaseInterface::UserFieldResult getUserToken(const QString &userName, QString &token) override;
Server_DatabaseInterface::UserFieldResult getAdminNotes(const QString &userName, QString &notes) override;
Server_DatabaseInterface::UserFieldResult setAdminNotes(const QString &userName, const QString &notes) override;
bool addBan(const QString &userName,
const QString &address,
int adminId,
int minutes,
const QString &reason,
const QString &visibleReason,
const QString &clientId) override;
bool getUserNamesByClientId(const QString &clientId, QList<QString> &userNames) override;
QList<ServerInfo_Warning> getUserWarnHistory(const QString &userName) override;
QList<ServerInfo_ChatMessage> getMessageLogHistory(const QString &user,
const QString &ipaddress,