feat(admin): frontend dashboard complet pour #71
CI / lint (push) Successful in 36s
CI / security (push) Successful in 23s
CI / test (push) Successful in 46s
CI / build (push) Successful in 22s
CI / e2e (push) Successful in 5m43s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s

Page admin standalone + widgets temps réel + CRUD users via AdminPanel existant.

- frontend/admin.html : page admin (header + 4 sections : stats temps réel,
  audit logs, backups, gestion utilisateurs + footer)
- frontend/js/admin.js : module ES avec init(), connectSSE(), loadStatsOnce(),
  loadAuditLogs(), loadBackupStats(), renderStatsWidget(), renderAuditTable(),
  renderBackups() + helpers (formatBytes, formatUptime, severityColor)
- frontend/locales/{fr,en}.json : 36 clés admin.* identiques (diff vérifié)
- frontend/js/auth.js : adminRow.onclick redirige vers /admin.html (au lieu de
  AdminPanel.show() qui reste fonctionnel)
- tests/frontend/unit.test.mjs : 3 nouveaux tests (admin.js existe + exports + parse)
- tests/test_auth_api.py : 2 nouveaux tests smoke (PATCH + DELETE /api/auth/admin/users)

Vérifié :
- pytest : 494 passed, 5 skipped (492 baseline + 2 nouveaux)
- frontend unit : 7 passed (4 baseline + 3 admin)
- validate-imports : 30 modules validated (29 + admin.js)
- pane-manager JSDOM : 9/9 passed
- ruff check backend/ : All checks passed
This commit is contained in:
2026-09-07 11:14:46 -04:00
parent 3908e1601a
commit 46be24f6a3
7 changed files with 995 additions and 1 deletions
+27
View File
@@ -42,6 +42,19 @@
"about.tests": "Tests",
"about.vaults_configured": "Configured vaults",
"about.version": "Version",
"admin.audit_all_actions": "All actions",
"admin.audit_empty": "No log available",
"admin.audit_filter_action": "Action",
"admin.audit_filter_user": "Filter by user",
"admin.audit_refresh": "Refresh",
"admin.audit_title": "Audit logs",
"admin.back_btn": "← Back",
"admin.backups_newest": "Newest: {days} days",
"admin.backups_oldest": "Oldest: {days} days",
"admin.backups_per_vault": "Per vault",
"admin.backups_title": "Backup statistics",
"admin.backups_total": "Total: {count} backups ({size})",
"admin.backups_vault_empty": "No backup",
"admin.close": "Close",
"admin.col_actions": "Actions",
"admin.col_last_login": "Last login",
@@ -49,8 +62,22 @@
"admin.col_status": "Status",
"admin.col_user": "User",
"admin.col_vaults": "Vaults",
"admin.forbidden_msg": "You must be an administrator to access this page.",
"admin.forbidden_title": "Access denied",
"admin.header_subtitle": "Administrator dashboard",
"admin.new_user": "+ New user",
"admin.page_title": "ObsiGate — Administration",
"admin.stats_cpu": "CPU",
"admin.stats_disk": "Disk",
"admin.stats_memory": "Memory",
"admin.stats_refresh": "Last update: {time}",
"admin.stats_sessions": "Active sessions",
"admin.stats_title": "Real-time statistics",
"admin.stats_uptime": "Uptime",
"admin.title": "Administration — Users",
"admin.users_manage_btn": "Manage users",
"admin.users_manage_hint": "Open the user management modal (full CRUD)",
"admin.users_title": "User management",
"ai.casual": "Casual tone",
"ai.completion_added": "AI: completion added",
"ai.continue": "Continue",
+27
View File
@@ -42,6 +42,19 @@
"about.tests": "Tests",
"about.vaults_configured": "Vaults configurés",
"about.version": "Version",
"admin.audit_all_actions": "Toutes les actions",
"admin.audit_empty": "Aucun log disponible",
"admin.audit_filter_action": "Action",
"admin.audit_filter_user": "Filtrer par utilisateur",
"admin.audit_refresh": "Rafraîchir",
"admin.audit_title": "Logs d'audit",
"admin.back_btn": "← Retour",
"admin.backups_newest": "Plus récent : {days} jours",
"admin.backups_oldest": "Plus ancien : {days} jours",
"admin.backups_per_vault": "Par vault",
"admin.backups_title": "Statistiques backups",
"admin.backups_total": "Total : {count} backups ({size})",
"admin.backups_vault_empty": "Aucun backup",
"admin.close": "Fermer",
"admin.col_actions": "Actions",
"admin.col_last_login": "Dernière connexion",
@@ -49,8 +62,22 @@
"admin.col_status": "Statut",
"admin.col_user": "Utilisateur",
"admin.col_vaults": "Vaults",
"admin.forbidden_msg": "Vous devez être administrateur pour accéder à cette page.",
"admin.forbidden_title": "Accès refusé",
"admin.header_subtitle": "Tableau de bord administrateur",
"admin.new_user": "+ Nouvel utilisateur",
"admin.page_title": "ObsiGate — Administration",
"admin.stats_cpu": "CPU",
"admin.stats_disk": "Disque",
"admin.stats_memory": "Mémoire",
"admin.stats_refresh": "Dernière mise à jour : {time}",
"admin.stats_sessions": "Sessions actives",
"admin.stats_title": "Statistiques temps réel",
"admin.stats_uptime": "Uptime",
"admin.title": "Administration — Utilisateurs",
"admin.users_manage_btn": "Gérer les utilisateurs",
"admin.users_manage_hint": "Ouvrir la modale de gestion des utilisateurs (CRUD complet)",
"admin.users_title": "Gestion utilisateurs",
"ai.casual": "Ton décontracté",
"ai.completion_added": "AI: complétion ajoutée",
"ai.continue": "Continuer",