Skip to main content

Administration : API NestJS et Admin Server Express

Vue d’ensemble

L’administration Web Uniksim repose sur deux couches distinctes qu’il ne faut pas confondre :

  1. les routes d’administration de l’API NestJS principale, utilisées par le frontend Angular et protégées par des guards;
  2. un serveur Express d’administration séparé dans uniksim-back-end/src/node.js/server/admin_server.js, qui écoute localement sur le port 8105 et gère surtout des opérations historiques/BrainCloud et certains flux SSE.

1. Administration dans l’API NestJS

Les contrôleurs d’administration sont regroupés dans uniksim-back-end/src/app.controller.ts et enregistrés dans AppModule.

  • AdminUserController sous /admin : récupération et gestion d’informations utilisateurs.
  • AdminPresenceController sous /admin/presence : présence en ligne, état de jeu et télémétrie.
  • AdminController : autres opérations administratives.
  • SupportAdminController : fonctions administratives du support.

La logique métier correspondante se trouve notamment dans src/service/admin.service.ts, src/service/adminUser.service.ts et src/service/presence.service.ts.

2. Admin Server Express séparé

Le fichier src/node.js/server/admin_server.js démarre un serveur Express distinct sur ConstantsInUse.ADMIN_SERVER_PORT, actuellement 8105. Son URL locale de référence est définie par ADMIN_SERVER_URL dans constantsVariable.js.

Ce serveur est utilisé notamment pour :

  • POST /admin/adminCommand : commandes d’administration BrainCloud telles que lecture de documents, récupération de simulations, copie de simulation et suppression d’un utilisateur d’une simulation;
  • POST /redisBulkCommands : commandes Redis groupées;
  • GET /getActiveSimulations/... : récupération des simulations actives;
  • GET /copySimNotification : progression d’une copie de simulation via SSE;
  • surveillance de certains jobs BrainCloud et relance lorsqu’ils disparaissent.

Important : ce serveur Express est une vraie seconde instance HTTP locale. Il ne remplace pas l’API NestJS et ne doit pas être confondu avec les contrôleurs /admin du serveur principal.

Routes frontend d’administration

Le routing Angular est défini directement dans uniksimFrontEnd/src/app/app.module.ts. Les principales routes sont :

  • /admin/list
  • /admin/support
  • /admin/presence
  • /admin/settings
  • /admin/searchDemo
  • /admin/activeSimulation
  • /admin/comments
  • /admin/:userUid

Sécurité

Les routes NestJS utilisent notamment AuthGuardAdmin et AuthGuardAdminUser. Le frontend applique aussi des guards selon le niveau d’accès, notamment AuthGuardConstAdmin et AuthGuardConstTrueAdmin.

Carte simplifiée

Angular Admin
   │
   ├── HTTP ──► NestJS principal : /admin/* ──► AdminService / AdminUserService / PresenceService
   │
   └──────────► Admin Server Express : 127.0.0.1:8105
                                      ├── BrainCloud
                                      ├── Redis
                                      └── SSE / copie de simulations

Fichiers principaux

  • uniksim-back-end/src/app.controller.ts
  • uniksim-back-end/src/app.module.ts
  • uniksim-back-end/src/node.js/server/admin_server.js
  • uniksim-back-end/src/node.js/server/constantsVariable.js
  • uniksim-back-end/src/service/admin.service.ts
  • uniksim-back-end/src/service/adminUser.service.ts
  • uniksim-back-end/src/service/presence.service.ts
  • uniksimFrontEnd/src/app/app.module.ts