Skip to content

🐛 [BUG] server-nestjs: adminRole.upsert/delete events have no consumer (Keycloak/GitLab admin sync dead) — cutover blocker #2723

Description

@shikanime

Description

Le service AdminRoleService de server-nestjs émet adminRole.upsert / adminRole.delete (admin-role.service.ts:45,124,169), mais aucun consommateur @OnEvent('adminRole.*') n'existe dans server-nestjs. CÎté legacy, hook.adminRole.upsert/delete (apps/server/src/resources/admin-role/business.ts:42,66,94) déclenche la synchronisation des groupes OIDC Keycloak et des groupes admin/auditeur GitLab.

C'est le mĂȘme schĂ©ma de rĂ©gression silencieuse que #2590 (projectMember, corrigĂ©) et #2575/#2576 : les Ă©critures admin-role restent aujourd'hui sans effet sur Keycloak/GitLab dĂšs que les routes sont servies par server-nestjs — dĂ©rive d'Ă©tat silencieuse, sans erreur.

Ce défaut bloque la bascule nginx-strangler de /api/v1/admin/roles tant qu'un pont n'existe pas.

PRs liées

Issues liées

Exemples simples

Spécifications techniques

Définition du fini

  • Le choix de conception est tranchĂ© et documentĂ© dans cette issue (consommateurs @OnEvent vs arrĂȘt des Ă©missions)
  • Le comportement cible couvre les trois sites d'Ă©mission (admin-role.service.ts:45,124,169)
  • Les specs verrouillant ce comportement sont ajoutĂ©es sous apps/server-nestjs
  • La paritĂ© avec le contrat legacy (hook.adminRole.*) est vĂ©rifiĂ©e

Activity

  1. added this to the 9.27.0 milestone on Sep 11, 2026
  2. self-assigned this
    on Sep 11, 2026
  3. moved this from Backlog to Ready in Cloud Pi Nativeon Sep 29, 2026
  4. added theissue type on Sep 29, 2026
  5. modified the milestones: 9.27.0, 9.28.0 on Oct 2, 2026
  6. shikanime commented on Oct 8, 2026

    @shikanime
    MemberAuthor

    Décision de conception (critÚre 1)

    Choix : consommateurs @OnEvent — la paritĂ© avec le pont legacy est maintenue.

    Les émissions adminRole.upsert / adminRole.delete sont conservées et consommées dans server-nestjs (décision alignée sur #2590) :

    • Keycloak (keycloak.service.ts) : handleAdminRoleUpsert / handleAdminRoleDelete → synchronisation des groupes OIDC, lecture depuis le payload (pas de relecture DB dans la transaction Ă©mettrice).
    • GitLab (gitlab.service.ts) : syncAdminRole → upsertUser avec flags admin/auditor, chemins admin multi-valuĂ©s via parseGroupPaths. La console est autoritaire pour ses membres : la rĂ©vocation converge les flags mĂȘme si le compte GitLab est absent (provisionnĂ© alors avec mots de passe alĂ©atoires, connexion rĂ©elle via OIDC).

    Implémenté dans #2749. Les autres critÚres (trois sites d'émission, specs sous apps/server-nestjs, parité hook.adminRole.*) sont couverts par son diff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions