Skip to main content

Administration : API NestJS et Admin Server Express

Vue d’ensemble

L’administration Webbackend d’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;guards et reliées aux services backend;
  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.

Architecture backend d’administration

flowchart LR
    CLIENT[Clients Web / outils internes] --> NEST[NestJS principal]
    CLIENT --> EXPRESS[Admin Server Express :8105]

    NEST --> AC[AdminController]
    NEST --> AUC[AdminUserController]
    NEST --> APC[AdminPresenceController]
    NEST --> SAC[SupportAdminController]

    AC --> AS[AdminService]
    AUC --> AUS[AdminUserService]
    APC --> PS[PresenceService]

    AS --> DB[(MySQL / TypeORM)]
    AUS --> DB
    PS --> REDIS[(Redis)]

    EXPRESS --> BC[BrainCloud]
    EXPRESS --> REDIS
    EXPRESS --> SSE[SSE / copie de simulations]

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

Flux :

d’une cecommande serveurAdmin Server
sequenceDiagram
    participant C as Client / outil admin
    participant E as Admin Server Express
    estparticipant uneB vraieas secondeBrainCloud
    instanceparticipant HTTPR locale.as IlRedis
    neparticipant remplaceS pasas l’APIFlux NestJSSSE

    etC->>E: neRequête doitadmin
    pasalt êtreCommande confonduBrainCloud
        avecE->>B: lesExécute contrôleursla commande
        B-->>E: Résultat
    else Commande Redis
        E->>R: redisBulkCommands(...)
        R-->>E: Résultat
    else Copie de simulation
        E->>B: Copie données /admin simulation
        E-->>S: Progression
        S-->>C: Événements SSE
    end
    E-->>C: Réponse
 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é backend

    Les routes NestJS utilisent notamment AuthGuardAdmin et AuthGuardAdminUser. LeToute frontendmodification appliqued’une aussiroute desd’administration guardsdoit selonvérifier le niveauguard d’accès, notamment AuthGuardConstAdminattendu et AuthGuardConstTrueAdmin.le rôle autorisé.

    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