feat: interface admin complète pour gestion système (Phase 2.3)
Implémentation complète de l'interface d'administration web : Backend (server/api/admin.js) : - Endpoints CRUD pour gestion des groupes (GET/POST/PUT/DELETE /admin/groups) - Gestion utilisateurs connectés en temps réel (GET/DELETE /admin/users) - Monitoring statistiques système (GET /admin/stats) - Affichage logs serveur avec filtrage (GET /admin/logs) - Configuration audio globale (PUT /admin/config/audio) - Système de tracking des connexions/déconnexions - Export fonctions registerUser, unregisterUser, addLog Frontend (client/src/Admin.jsx + Admin.css) : - Interface admin complète avec 4 onglets (Groupes, Utilisateurs, Stats, Logs) - Gestion groupes : création, modification, suppression avec formulaires - Gestion canaux audio par groupe (inputs/outputs) - Liste utilisateurs connectés avec déconnexion forcée - Dashboard statistiques temps réel (connexions, uptime, mémoire) - Viewer logs avec code couleur par niveau (debug/info/warn/error) - Rafraîchissement auto toutes les 3s - Design responsive et mode sombre Intégration système : - Routes admin montées sous /admin dans index.js - Enregistrement automatique des utilisateurs lors de la génération de token - Logs serveur centralisés dans le système admin - Routing simple frontend pour /admin (main.jsx) 🎛️ Interface accessible via https://localhost:5173/admin 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import { dirname, join } from 'path';
|
||||
import { networkInterfaces } from 'os';
|
||||
import YAML from 'yaml';
|
||||
import { AccessToken } from 'livekit-server-sdk';
|
||||
import adminRouter, { registerUser, addLog } from './api/admin.js';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
@@ -83,6 +84,9 @@ function log(level, ...args) {
|
||||
if (msgLevel >= configLevel) {
|
||||
const timestamp = new Date().toISOString();
|
||||
console.log(`[${timestamp}] [${level.toUpperCase()}]`, ...args);
|
||||
|
||||
// Ajouter au système de logs admin
|
||||
addLog(level, args.join(' '));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,6 +178,11 @@ app.use((req, res, next) => {
|
||||
next();
|
||||
});
|
||||
|
||||
// ========== Routes Admin ==========
|
||||
|
||||
// Monter les routes admin sous /admin
|
||||
app.use('/admin', adminRouter);
|
||||
|
||||
// ========== Routes API ==========
|
||||
|
||||
/**
|
||||
@@ -269,6 +278,9 @@ app.post('/token', async (req, res) => {
|
||||
|
||||
log('info', `Token généré: ${username} → ${groupId}`);
|
||||
|
||||
// Enregistrer l'utilisateur dans le système admin
|
||||
registerUser(participantIdentity, username, groupId, roomName);
|
||||
|
||||
res.json({
|
||||
token,
|
||||
url: LIVEKIT_URL,
|
||||
|
||||
Reference in New Issue
Block a user