Änderung: Erweiterung der Benutzerstatistiken im Admin-Bereich

Änderungen:
- Neue Methode `getUserStatistics` im `AdminController` hinzugefügt, um Benutzerstatistiken abzurufen.
- Implementierung der Logik zur Berechnung der Gesamtanzahl aktiver Benutzer, Geschlechterverteilung und Altersverteilung im `AdminService`.
- Neue Route `/users/statistics` im `adminRouter` definiert, um auf die Benutzerstatistiken zuzugreifen.
- Anpassungen der Navigationsstruktur und Übersetzungen für Benutzerstatistiken in den Sprachdateien aktualisiert.

Diese Anpassungen verbessern die Analyse der Benutzerbasis und erweitern die Funktionalität des Admin-Bereichs.
This commit is contained in:
Torsten Schulz (local)
2025-09-12 16:34:56 +02:00
parent b26bc0eb8b
commit 8f4327efb5
11 changed files with 394 additions and 13 deletions

View File

@@ -34,6 +34,9 @@ class AdminController {
this.listUserRights = this.listUserRights.bind(this);
this.addUserRight = this.addUserRight.bind(this);
this.removeUserRight = this.removeUserRight.bind(this);
// Statistics
this.getUserStatistics = this.getUserStatistics.bind(this);
}
async getOpenInterests(req, res) {
@@ -778,6 +781,20 @@ class AdminController {
}
}
}
async getUserStatistics(req, res) {
try {
const { userid: userId } = req.headers;
const statistics = await AdminService.getUserStatistics(userId);
res.status(200).json(statistics);
} catch (error) {
if (error.message === 'noaccess') {
res.status(403).json({ error: 'Keine Berechtigung' });
} else {
res.status(500).json({ error: error.message });
}
}
}
}
export default AdminController;

View File

@@ -222,9 +222,22 @@ const menuStructure = {
visible: ["mainadmin", "contactrequests"],
path: "/admin/contacts"
},
useradministration: {
users: {
visible: ["mainadmin", "useradministration"],
path: "/admin/users"
children: {
userlist: {
visible: ["mainadmin", "useradministration"],
path: "/admin/users"
},
userstatistics: {
visible: ["mainadmin"],
path: "/admin/users/statistics"
},
userrights: {
visible: ["mainadmin", "rights"],
path: "/admin/rights"
}
}
},
forum: {
visible: ["mainadmin", "forum"],
@@ -234,10 +247,6 @@ const menuStructure = {
visible: ["mainadmin", "chatrooms"],
path: "/admin/chatrooms"
},
userrights: {
visible: ["mainadmin", "rights"],
path: "/admin/rights"
},
interests: {
visible: ["mainadmin", "interests"],
path: "/admin/interests"